// 因为N被连续整数 5*6*7整除的结果是3,而3只是相对于连续整数的产物,说明重点是找出连续整数,。
//所以大致题意就是给出一个N,找出一段连续整数,使得N被整除。
//观察样例给出的答案发现,N不会被除自身以外大于sqrt(N)的数整除。
//可以用两个for循环暴力枚举。
#include"iostream" #include"cmath" int main() { long long N; scanf("%lld",&N); long long t = (long long)sqrt(N*1.0),MAX = -1,start = -1;//记录连续序列的最大长度; for(long long i = 2; i <=t; ++i) { long long temp = 1; for(long long j = i; j<=t; ++j) { temp*=j;//获取当前连续整数的乘积 if(N % temp == 0) { if(MAX < j-i+1) { MAX = j-i+1; start = i; } } else break; } } if(MAX == -1) printf("1\n%lld",N);//如果是素数,那么输出N本身 else { printf("%lld\n",MAX); for(long long i = 0; i < MAX; ++i) { printf("%lld",start+i); if(i < MAX - 1) printf("*"); } } return 0; }
原文地址:https://www.cnblogs.com/keep23456/p/12300998.html
时间: 2024-10-28 22:10:19