PAT 1096. Consecutive Factors (20)

1096. Consecutive Factors (20)

Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 3*5*6*7, where 5, 6, and 7 are the three consecutive numbers. Now given any positive N, you are supposed to find the maximum number of consecutive factors, and list the smallest sequence of the consecutive factors.

Input Specification:

Each input file contains one test case, which gives the integer N (1<N<231).

Output Specification:

For each test case, print in the first line the maximum number of consecutive factors. Then in the second line, print the smallest sequence of the consecutive factors in the format "factor[1]*factor[2]*...*factor[k]", where the factors are listed in increasing order, and 1 is NOT included.

Sample Input:

630

Sample Output:

3
5*6*7

最初将start的下一个设置为start = start + length + 1, 这种是错误的。而且这里用long long是因为start*start会超过int32表示的范围而不能跳出导致最后一个测试点运行超时
 1 #include <iostream>
 2 #include <cmath>
 3
 4 using namespace std;
 5
 6 int main()
 7 {
 8     long long num;
 9     cin >> num;
10
11     long long start = 2, length = 0;
12     long long maxLength = 0, maxStart;
13     long long remain = num;
14     while (1)
15     {
16         if (remain % (start + length) != 0)
17         {
18             if (length > maxLength)
19             {
20                 maxLength = length;
21                 maxStart = start;
22             }
23             start++;
24             length = 0;
25             remain = num;
26             if (start*start > num)
27                 break;
28         }
29         else
30         {
31             remain /= (start + length);
32             length++;
33         }
34     }
35
36     if (maxLength == 0)
37     {
38         cout << 1 << endl;
39         cout << num;
40         return 0;
41     }
42     cout << maxLength << endl;
43     for (long long i = 0; i < maxLength; i++)
44     {
45         cout << maxStart + i;
46         if (i < maxLength - 1)
47             cout << "*";
48     }
49 }
时间: 2024-08-01 18:07:45

PAT 1096. Consecutive Factors (20)的相关文章

1096. Consecutive Factors (20)——PAT (Advanced Level) Practise

题目信息 1096. Consecutive Factors (20) 时间限制400 ms 内存限制65536 kB 代码长度限制16000 B Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 3*5*6*7, where 5, 6, and 7 are the three consecu

PAT Advanced 1096 Consecutive Factors (20分)

Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 3×5×6×7, where 5, 6, and 7 are the three consecutive numbers. Now given any positive N, you are supposed to find the maxim

1096. Consecutive Factors (20)

Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 3*5*6*7, where 5, 6, and 7 are the three consecutive numbers. Now given any positive N, you are supposed to find the maxim

PAT 1096. Consecutive Factors

Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 356*7, where 5, 6, and 7 are the three consecutive numbers. Now given any positive N, you are supposed to find the maximum

PAT甲题题解-1096. Consecutive Factors(20)-(枚举)

题意:一个正整数n可以分解成一系列因子的乘积,其中会存在连续的因子相乘,如630=3*5*6*7,5*6*7即为连续的因子.给定n,让你求最大的连续因子个数,并且输出其中最小的连续序列. 比如一个数可以分解2*3*4*6*7*8,最大的连续个数为3,因为存在两个,输出最小的那个即2*3*4. 首先,一个数如果是合数,那么它的因子必定不会超过sqrt(n)或者sqrt(n)+1.如果为质数,那么只可能为自己,因为题目说了不包括1. 我们先将2~sqrt(n)+1中为n的因子存到factor数组中,

PAT (Advanced Level) 1096. Consecutive Factors (20)

如果是素数直接输出1与素数,否则枚举长度和起始数即可. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<queue> #include<stack> #include<algorithm> using namespace std; long long n; bool prime(

PAT甲级——1096 Consecutive Factors (数学题)

本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/91349859 1096 Consecutive Factors (20 分) Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 3×5×6×7, where

PAT 甲级 1096 Consecutive Factors

https://pintia.cn/problem-sets/994805342720868352/problems/994805370650738688 Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 3×5×6×7, where 5, 6, and 7 are the three con

1096 Consecutive Factors

// 因为N被连续整数 5*6*7整除的结果是3,而3只是相对于连续整数的产物,说明重点是找出连续整数,.//所以大致题意就是给出一个N,找出一段连续整数,使得N被整除. //观察样例给出的答案发现,N不会被除自身以外大于sqrt(N)的数整除.//可以用两个for循环暴力枚举. #include"iostream" #include"cmath" int main() { long long N; scanf("%lld",&N); l