Write a program to find and print the nth element in this sequence
题目大意:求出以2,3,5,7为因子的第n个数字。
代码如下:注意111后面跟th
1 # include<iostream> 2 # include<cstdio> 3 # include<cstring> 4 # include<cstdlib> 5 # define LL __int64 6 7 using namespace std; 8 9 int cmp(const void *a,const void *b) 10 { 11 return *(int *)a - *(int *)b; 12 } 13 LL dp[10000],num; 14 void init() 15 { 16 num = 0; 17 LL i,j,k,m; 18 for(i=1; i<=2000000000; i*=7) 19 { 20 for(j=1; i*j<=2000000000; j*=5) 21 { 22 for(k=1; i*j*k<=2000000000; k*=3) 23 { 24 for(m=1; i*j*k*m<=2000000000; m*=2) 25 { 26 dp[num] = i*j*k*m; 27 //printf("dp[%I64d] = %I64d\n",num,dp[num]);num定义成了__int64位,之前一直输出%d,看结果一直不对,坑 28 num++; 29 } 30 } 31 } 32 } 33 qsort(dp,num,sizeof(dp[0]),cmp); 34 } 35 int main() 36 { 37 init(); 38 int n,i,j,a,b,c; 39 while(scanf("%d",&n)&&n) 40 { 41 if(n%10==1 &&n%100 != 11) 42 printf("The %dst humble number is ",n); 43 else if(n%10==2 &&n%100 != 12) 44 printf("The %dnd humble number is ",n); 45 else if(n%10==3 &&n%100 != 13) 46 printf("The %drd humble number is ",n); 47 else 48 printf("The %dth humble number is ",n); 49 printf("%I64d.\n",dp[n-1]); 50 } 51 return 0; 52 }