L1-6 连续因子 (新的开始

Posted fatcatm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了L1-6 连续因子 (新的开始相关的知识,希望对你有一定的参考价值。

一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3*5*6*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。

输入格式:

输入在一行中给出一个正整数N(1<N<231)。

输出格式:

首先在第1行输出最长连续因子的个数;然后在第2行中按“因子1*因子2*……*因子k”的格式输出最小的连续因子序列,其中因子按递增顺序输出,1不算在内。

输入样例:

630

输出样例:

3
5*6*7

解题思路:

通过12! < 231 可知最多连续不超过12个数,之后由于小的连续序列一定更长,从最长最小的可能序列开始暴力枚举

 1 #include<cstdio>
 2 
 3 int main(void)
 4 {
 5     int n;
 6     scanf("%d", &n);
 7     
 8     int i = 2;
 9     while(n % i != 0){
10         i++;
11     }
12     int m = n / i, max = 0;
13     
14     int len, st, first = 1;
15     for(int i = 2; i < m; i++){
16         int j = i + 1, sum = i;
17         while(sum < n){
18             sum *= j;
19             j++;
20         }
21         if(sum == n && first){
22             st = i; len = j - 1;
23             first = 0;
24         }
25         else if(sum == n){
26             if(j - i > max) max = j - i;
27         }
28     }
29     
30     printf("%d\n", max);
31     first = 1;
32     for(int k = st; k <= len; k++){
33         if(first){
34             printf("%d", k); first = 0;
35         } 
36         else printf("*%d", k);
37     }
38     
39     return 0;
40 }

 

以上是关于L1-6 连续因子 (新的开始的主要内容,如果未能解决你的问题,请参考以下文章

L1-006 连续因子 (20分)

L1-006 连续因子 (20分) 一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 567 就是 3 个连续的数字。给定任一正整数 N,要求编写程序

如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用

连续因子

数据库索引的填充因子

CCCC 连续因子