这一题只做出来小数的,感觉也是乱作的,居然做对了。
就直接假设能由3个数构成,直接求得相关条件即可。
1 #include<iostream> 2 using namespace std; 3 long long N; 4 int main(){ 5 int T; 6 cin>>T; 7 for(int Case=1;Case<=T;Case++){ 8 cin>>N; 9 bool isok=false; 10 for(int i=1;i*i<=N;i++){ 11 if(N%i==0){ 12 for(int j=2;j<=N/i;j++){ 13 if((N/i-1)%j!=0) 14 continue; 15 int temp=(N/i-1)/j+1; 16 if(temp>=2){ 17 cout<<"Case "<<Case<<": "<<temp*j*i<<" "<<i*j<<" "<<i<<endl; 18 isok=true; 19 break; 20 } 21 } 22 if(isok) 23 break; 24 } 25 } 26 if(!isok) 27 cout<<"Case "<<Case<<": no solution"<<endl; 28 29 } 30 }
微软编程之美初赛第二场第一题神奇的数列,布布扣,bubuko.com
原文:http://www.cnblogs.com/royjwy/p/3681327.html