HDU 1058 DP
2014-08-09 11:06
197 查看
自己做的时候没想法。。。。好渣啊好渣怎么办!。。。。
觉得这样的题不算DP吧。。。感觉不大。就是轮流找素数因子,每次把找到最小的那个值更新,觉得方法挺巧的。说是很卡输出格式,估计还顺便考英语。。。不过有前辈助力,所以没有纠结太久 。
觉得这样的题不算DP吧。。。感觉不大。就是轮流找素数因子,每次把找到最小的那个值更新,觉得方法挺巧的。说是很卡输出格式,估计还顺便考英语。。。不过有前辈助力,所以没有纠结太久 。
#include <stdio.h> #define maxn 60000 int ar[maxn]; int min(int a,int b,int c,int d) { int t1=a>b?b:a; int t2=c>d?d:c; return t1>t2?t2:t1; } void find() { int i,a,b,c,d; int n1,n2,n3,n4; ar[1]=1; n1=n2=n3=n4=1; for(i=2;i<maxn;i++) { a=ar[n1]*2; b=ar[n2]*3; c=ar[n3]*5; d=ar[n4]*7; ar[i]=min(a,b,c,d); if(ar[i]==a) n1++; if(ar[i]==b) n2++; if(ar[i]==c) n3++; if(ar[i]==d) n4++; } } int main() { int n; find(); while(scanf("%d",&n),n!=0) { int i,j; i=n/10; j=i%10; //if(n%10==1&&j==1) printf("The %dth humble number is %d.\n",n,ar ); if(n%10==1&&j!=1) printf("The %dst humble number is %d.\n",n,ar ); else if(n%10==2&&j!=1) printf("The %dnd humble number is %d.\n",n,ar ); else if(n%10==3&&j!=1) printf("The %drd humble number is %d.\n",n,ar ); else printf("The %dth humble number is %d.\n",n,ar ); } return 0; }
相关文章推荐
- zoj 1095 || hdu 1058 Humble Numbers( DP || 乱搞)
- 【HDU 1058 & HDU 3199 类似丑数】 简单DP思想
- HDU 1058 Humble Numbers(DP,数)
- hdu 1058 朴素算法和DP做法
- HDU 1058 Humble Numbers(dp)
- HDU_1058 Humble Numbers(DP)
- hdu 1058 Humble Numbers || poj 1338(dp)
- hdu 1058 DP
- hdu 1058 Humble Numbers (DP)
- HDU 1058 Humble Numbers (DP)
- hdu1058(dp)
- HDU 1058 Humble Numbers (DP)
- HDU 1058 Humble Number DP
- hdu 1058 Humble Numbers(DP)
- HDU 1058(DP)
- hdu 1058 Humble Numbers (DP)
- hdu 1058 dp
- hdu 1058 Humble Numbers (dp)
- hdu 1058(dp)
- hdu 1058 dp解法