超级题目连接ios
这题程序实现其实并不难,难的是数学的思想及证实,这在真正的比赛考场上实际上是不容易想到的编程
去年的年赛题目也是在往更难的数学思想上靠拢,并非一味的编程,须要必定的数学基础spa
这个。。数学性质我再提一下吧,有兴趣的能够本身尝试证一下~~code
_性质一_blog
一个AP数分解质因数后,它的因子必为连续质数get
_性质二_博客
一个AP数分解质因数后,因子越小,指数越大数学
实际上,我以为这两个数学性质都蛮好想的,我的感受不用看证实。string
另外,编程时注意如下几点:it
1)一个AP数的质因子数不会超过10,否则大于数据范围
2)用long long型变量存储答案,否则会爆
3)指数递减
代码:
1 #include<cmath> 2 #include<cstdio> 3 #include<iostream> 4 #include<cstring> 5 #include<algorithm> 6 using namespace std; 7 long long n,ap,fap;//ap是要输出的答案,fap是答案的质因子数 8 int mm[]={2,3,5,7,11,13,17,19,23,29};//可能的质因子 9 void dfs(long long num,int fnum,int i,int j){ 10 if(fap<fnum||(fap==fnum&&ap>num)){//更改输出答案的条件 11 fap=fnum; 12 ap=num; 13 } 14 int t=1; 15 while(t<=j&&num*mm[i]<=n){//直接判断 16 num*=mm[i]; 17 dfs(num,fnum*(t+1),i+1,t); 18 t++; 19 } 20 return; 21 } 22 int main(){ 23 while(scanf("%d",&n)!=EOF){//多组数据 24 ap=fap=0;//赋初值,否则会错的很惨 25 dfs(1,1,0,20); 26 cout<<ap<<endl; 27 } 28 return 0; 29 }
呐呐,就是这样了哦,新人博客,多多支持一下吧,嘻嘻~~~