一、题目
二、个人理解
Tips:
- 暴力求解。题目的数据范围在 1<N<231 1 < N < 2 31 ,而12!就大于这个范围,所以最多只能有12位连续因子。
- 注意溢出情况。
- 需注意素数的情况。
C++:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int number,count=0;
cin>>number;
int MAX=sqrt(number);//可以少运算,防止溢出
//暴力法
for(int len=12;len>=1;len--){
for(int i=1;i<=MAX;i++){
int sum=1;
for(int j=i+1;j-i<=len;j++){
sum*=j;
}
if(number%sum==0){
cout<<len<<endl<<i+1;
for(int k=i+2;k-i<=len;k++){
cout<<"*"<<k;
}
return 0;
}
}
}
cout<<1<<endl<<number;//考虑到可能number为素数,所以输出本身
}