ACM-- Humble Numbers
来源:互联网 发布:在职软件工程硕士 编辑:程序博客网 时间:2024/06/08 19:02
// Humberl Numbers;// 写出仅由2,3,5或7为因子的数。// 前20项如 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27 // 可知,前面的项在乘2,3,5或7后得到的数是符合的 // 从1开始计算,1分别与4个因子相乘,分别为2,3,5,7,其中最小的数2符合。 // 所以f(n)=min(f(i)*2,f(j)*3,f(m)*5,f(n)*7). 每取出一次最小的数,相应的变量+1.既移到下一个数。 // 若最小的数相等,变量同时+1// Ps:11和1011 的英文表达都是11th,1011th #include<iostream>#include<algorithm>#include<stdio.h>long long a[5900];using namespace std;int main(){a[1]=1;int i=1,j=1,m=1,n=1;for(int k=2;k<=5842;k++){int b[4];b[0]=a[i]*2;b[1]=a[j]*3;b[2]=a[m]*5;b[3]=a[n]*7;int min=b[0];for(int q=1;q<4;q++) if(b[q]<min) min=b[q];//cout<<i<<" "<<j<<" "<<m<<" "<<n<<" "<<endl;a[k]=min; for(int q=0;q<4;q++) { if(b[q]==min) { switch(q) { case 0:i++;break; case 1:j++;break; case 2:m++;break; case 3:n++;break; } } } //cout<<a[k]<<endl; }int Num;while(cin>>Num,Num){ int t=Num%10;if(Num%100==11||Num%100==12||Num%100==13) t=4;char Out[1000];switch(t){case 1:sprintf(Out,"The %dst humble number is %lld.",Num,a[Num]);break;case 2:sprintf(Out,"The %dnd humble number is %lld.",Num,a[Num]);break;case 3:sprintf(Out,"The %drd humble number is %lld.",Num,a[Num]);break;default:sprintf(Out,"The %dth humble number is %lld.",Num,a[Num]);}cout<<Out<<endl;}return 0;}
0 0
- ACM-- Humble Numbers
- [ACM] hdu 1058 Humble Numbers
- HDOJ 1058 Humble Numbers 杭电 ACM
- ACM--steps--3.2.4--Humble Numbers
- 6.19 杭电acm Humble Numbers
- 杭电acm—1058 Humble Numbers
- Humble Numbers
- Humble Numbers
- Humble Numbers
- Humble Numbers
- Humble Numbers
- Humble Numbers
- Humble Numbers
- Humble Numbers
- Humble Numbers
- Humble Numbers
- Humble Numbers
- Humble Numbers
- 黑马程序员—Java网络编程
- Activity启动流程、Looper及Handler
- ALSA音频架构
- 原生支持OpenFlow1.3协议的Mininet安装与验证
- DB2 reorg
- ACM-- Humble Numbers
- adb挂掉
- Flex中时间日期计算
- 容器
- 激活CS6
- 如何动态创建数组
- AChartEngine添加到View中
- oracle 插入带有单引号的字段值
- IOS resign error: dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib