Humble Numbers找规律
Posted 唐唐123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Humble Numbers找规律相关的知识,希望对你有一定的参考价值。
【思路】找规律,你会发现这个数列的每个数都是2, 3, 5, 7的倍数,那么f[n]=f[i]*2 f[j]*3 f[k]*5 f[h]*7中最小的一个,然后对应的i,j,k,h加一
此外需注意第1到第一千的表示方法,11th, 12th, 13th,别的 *1st,*2nd,*3rd, 剩余的数为**th。
AC代码:
1 #include<stdio.h> 2 int f[6000]; 3 int min(int a,int b) 4 { 5 if(a<b)return a; 6 else return b; 7 } 8 int main() 9 { 10 int i,a,b,c,d,n; 11 f[1]=1; 12 a=b=c=d=1; 13 for(i=2;i<=5842;i++) 14 { 15 f[i]=min(f[a]*2,min(f[b]*3,min(f[c]*5,f[d]*7))); 16 if(f[i]==f[a]*2)a++; 17 if(f[i]==f[b]*3)b++; 18 if(f[i]==f[c]*5)c++; 19 if(f[i]==f[d]*7)d++; 20 } 21 while(scanf("%d",&n),n) 22 { 23 if(n%10==1&&n % 100!=11)printf("The %dst humble number is %d.\n",n,f[n]); 24 else 25 if(n%10==2&&n % 100!=12)printf("The %dnd humble number is %d.\n",n,f[n]); 26 else 27 if(n%10==3&&n % 100!=13)printf("The %drd humble number is %d.\n",n,f[n]); 28 else 29 printf("The %dth humble number is %d.\n",n,f[n]); 30 } 31 return 0; 32 }
以上是关于Humble Numbers找规律的主要内容,如果未能解决你的问题,请参考以下文章