【 PAT 1007Consecutive Factors (20)】

来源:互联网 发布:双色球数据图表新浪网 编辑:程序博客网 时间:2024/04/28 23:47

题目描述
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.

输入描述:
Each input file contains one test case, which gives the integer N (131).

输出描述:
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.

输入例子:
630

输出例子:
3
5*6*7

题意 : 找到最长的的连续数序列相乘可以整除n的序列,并输出最小的序列

思路 : 暴力 ~ QAQ

AC代码:

#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;const int MAX = 1e5 + 10;typedef long long LL;int main(){    int n,ans = 0,sum = 0;    scanf("%d",&n);    for(int i = 2;i * i <= n; i++){        int o = n,p = i,cut = 0;        while(o % p == 0) cut++,o /= p,p++;        if(cut > ans) ans = cut,sum = i;    }    if(!ans) printf("1\n%d\n",n);    else{        printf("%d\n%d",ans,sum);        for(int i = 1; i < ans; i++) printf("*%d",++sum);    }    return 0;}
原创粉丝点击