hdu1058 Humble Numbers
2014-07-03 23:28
363 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1058
又是一道dp的题,还是木有找到做这种题的感觉。
思路就是不断地找出2^i 3^j 5^k 7^k相乘起来的合数,但是因为题目要求是要排序,所以每次都找到最小的
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; int n,i,j,k,t,l; int a[6000]; int max(int a,int b,int c,int d) { int min=a; if(b<min)min=b; if(c<min)min=c; if(d<min)min=d; if(a==min) { i++; } if(b==min) { j++; } if(c==min) { k++; } if(d==min) { t++; } return min; } int main() { a[1]=1; i=j=k=t=1; for(l=2;l<=5842;l++) { a[l]=max(2*a[i],3*a[j],5*a[k],7*a[t]);//这里其实是求最小的 } while(scanf("%d",&n)!=EOF) { if(n==0) break; if(n%10==1&&n%100!=11) printf("The %dst humble number is %d.\n",n,a ); else if(n%10==2&&n%100!=12) printf("The %dnd humble number is %d.\n",n,a ); else if(n%10==3&&n%100!=13) printf("The %drd humble number is %d.\n",n,a ); else printf("The %dth humble number is %d.\n",n,a ); } return 0; }
又是一道dp的题,还是木有找到做这种题的感觉。
思路就是不断地找出2^i 3^j 5^k 7^k相乘起来的合数,但是因为题目要求是要排序,所以每次都找到最小的
相关文章推荐
- HDU1058 Humble Numbers , dp(数组有序特性)
- Humble Numbers-hdu1058
- hdu1058-Humble Numbers (dp)
- POJ2247,hdu1058(Humble Numbers)
- hdu1058 Humble Numbers (动态规划)
- HDU1058:Humble Numbers
- HDU1058 Humble Numbers(DP)
- hdu1058 Humble Numbers
- HDU1058 Humble Numbers(动态规划+暴力打表)
- HDU1058 Humble Numbers
- HDU1058[Humble Numbers]
- HDU1058 Humble Numbers
- HDU1058 Humble Numbers(优先队列+set)
- hdu1058 Humble Numbers DP
- hdu1058 Humble Numbers
- hdu1058 Humble Numbers(dp打表)
- hdu1058-Humble Numbers
- hdu1058.Humble Numbers
- hdu1058 Humble Numbers && hdu3199 Hamming Problem(简单dp)
- hdu1058 Humble Numbers 解题报告