超級題目連接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 }
吶吶,就是這樣了哦,新人博客,多多支持一下吧,嘻嘻~~~