标签:
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 0 Accepted Submission(s): 0
1 #include <iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstdlib> 6 #include<set> 7 using namespace std; 8 int t,x,len; 9 int arr[6000]; 10 int main() 11 { 12 len=0; 13 for(int a=0;a<=32;a++) 14 { 15 double aa=pow(2.0,a*1.0); 16 for(int b=0;b<=19;b++) 17 { 18 double bb=pow(3.0,b*1.0); 19 if (aa*bb>=1200000000.0) break; 20 for(int c=0;c<=14;c++) 21 { 22 double cc=pow(5.0,c*1.0); 23 if (aa*bb*cc>=1200000000.0) break; 24 for(int d=0;d<=11;d++) 25 { 26 double dd=pow(7.0,d*1.0); 27 if (aa*bb*cc*dd>=1200000000.0) break; 28 arr[++len]=(int)aa*bb*cc*dd; 29 } 30 } 31 } 32 } 33 sort(arr+1,arr+len+1); 34 //printf("%d\n",arr[len]); 35 //for(int i=1;i<=len;i++) printf("%d ",arr[i]); 36 // printf("%d\n",len); 37 while(scanf("%d",&t)!=EOF) 38 { 39 for(;t>0;t--) 40 { 41 scanf("%d",&x); 42 43 // set<int> s; 44 // s.insert(1); 45 // while(!s.empty()) 46 // { 47 // set<int>::iterator ii; 48 // ii=s.begin(); 49 // if (*ii>=x) {printf("%d\n",*ii); break;} 50 // s.erase(s.begin()); 51 // int k=*ii; 52 // if(k*2<1200000000) s.insert(k*2); 53 // if(k*3<1200000000) s.insert(k*3); 54 // if(k*5<1200000000) s.insert(k*5); 55 // if(k*7<1200000000) s.insert(k*7); 56 // } 57 58 int l=1,r=len; 59 while(l<r) 60 { 61 int mid=(l+r)/2; 62 if (arr[mid]<x) l=mid+1; 63 else r=mid; 64 } 65 printf("%d\n",arr[l]); 66 67 } 68 } 69 return 0; 70 }
2016 ACM/ICPC Asia Regional Qingdao Online 1001 I Count Two Three
标签:
原文地址:http://www.cnblogs.com/Annetree/p/5879928.html