HDU 1058 Humble Numbers--DP--(计数器技巧)
来源:互联网 发布:数据铭品 编辑:程序博客网 时间:2024/06/06 12:55
题意:输出第n大的质因数只有2,3,5,7的数
分析:预处理满足这些条件的数,然后输出dp[n]就行,满足条件的数无非就是2,3,5,7不断的做乘积
这题的关键就是如何把这些乘积从小到大存入数组:设置四个计数器p2,p3,p5,p7完成这个任务
代码:
#include<iostream>#include<cstdio>#define min(a,b) (a<b?a:b)using namespace std;int n,dp[6000];void check(){ int p2,p3,p5,p7;p2=p3=p5=p7=1;dp[1]=1;int i=1;while(dp[i]<=2000000000){int m1=min(2*dp[p2],3*dp[p3]);int m2=min(5*dp[p5],7*dp[p7]);int mi=min(m1,m2);dp[++i]=mi;if(dp[i]==2*dp[p2]) p2++;if(dp[i]==3*dp[p3]) p3++;if(dp[i]==5*dp[p5]) p5++;if(dp[i]==7*dp[p7]) p7++;}}int main(){check();while(cin>>n){if(!n) break;cout<<"The "<<n;if(n%100==11||n%100==12||n%100==13) cout<<"th";else if(n%10==1) cout<<"st";else if(n%10==2) cout<<"nd";else if(n%10==3) cout<<"rd";else cout<<"th"; cout<<" humble number is "<<dp[n]<<"."<<endl;}}
0 0
- HDU 1058 Humble Numbers--DP--(计数器技巧)
- HDU 1058 Humble Numbers (DP)
- hdu 1058 Humble Numbers (DP)
- HDU 1058 Humble Numbers(DP,数)
- HDU 1058 Humble Numbers(dp+greedy)
- HDU 1058 Humble Numbers(DP,数)
- HDU 1058 Humble Numbers(dp)
- hdu 1058 Humble Numbers(dp)
- 【HDU】1058 - Humble Numbers(dp)
- hdu 1058(简单dp)Humble Numbers
- 【HDU】-1058-Humble Numbers(DP)
- hdu 1058 Humble Numbers (DP)
- hdu 1058 Humble Numbers (dp)
- hdu 1058 Humble Numbers(dp)
- hdu 1058 Humble Numbers(DP)
- 【DP】HDU-1058 Humble Numbers
- hdu 1058 Humble Numbers【dp】
- hdu 1058 Humble Numbers(dp)
- JS之——比较字符串大小(插曲)
- 狂刷Android范例之1:ReadAsset
- 创建ajax对象
- 使用pyinstaller打包python为exe文件
- setValuesForKeysWithDictionary
- HDU 1058 Humble Numbers--DP--(计数器技巧)
- Oracle编译器警告
- mysql旧表去重数据导入新表且赋予主键id新值
- 软件开发团队阶段
- 编程常用英语单词(二)
- MyEclipse设置JVM内存大小
- java基础集合数组间的转换(java集合五)
- 如何解决 Intent 调用缓冲数据问题
- 输入输出--write