题目大意:
将所有的以 2 3 5 7 因子的数,排好序放在数组里。
思路:
num[ i ] = min { 2*i,3*j,5*k,7*m }
借鉴豆豆的思路,听他说要这么做,,,然而我真的没有写出来。,
AC代码:
- #include<iostream>
- #include<cmath>
- #include<string.h>
- #include<stdio.h>
- using namespace std;
- int main()
- {
- // freopen("r.txt","r",stdin);
- long long int arr[6666];
- arr[1]=1;
- int a,b,c,d;
- a=b=c=d=1;
- int i;
- for(i=2;i<5844;i++)
- {
- arr[i]=min(arr[a]*2,min(arr[b]*3,min(arr[c]*5,arr[d]*7)));
- //cout<<arr[i]<<endl;
- if(arr[i]==arr[a]*2)
- a++;
- if(arr[i]==arr[b]*3)
- b++;
- if(arr[i]==arr[c]*5)
- c++;
- if(arr[i]==arr[d]*7)
- d++;
- }
- //cout<<arr[5200]<<endl;
- int n;
- while(~scanf("%d",&n))
- {
- if(n==0) break;
- cout<<"The "<<n;
- if(n%10==1&&n%100!=11)
- cout<<"st humble number is ";
- else if(n%10==2&&n%100!=12)
- cout<<"nd humble number is ";
- else if(n%10==3&&n%100!=13)
- cout<<"rd humble number is ";
- else
- cout<<"th humble number is ";
- cout<<arr[n]<<"."<<endl;
- }
- }