hdu/hdoj 1058 Humble Numbers
2013-08-28 21:53
417 查看
这个题可能没用到什么数论的知识,但需要一点 对 素数分解的知识;
知道这个素数可以表示成 M=2^x * 3^y * 5^z * 7^k;
然后就是就是考虑数的大小排列问题;
在处理方式上参考了Tanky Woo大神的代码;
知道这个素数可以表示成 M=2^x * 3^y * 5^z * 7^k;
然后就是就是考虑数的大小排列问题;
在处理方式上参考了Tanky Woo大神的代码;
#include <iostream> #include <stdio.h> using namespace std; __int64 humble[6000]; int _min(int a, int b, int c, int d) { int m; if(a < b) m = a; else m = b; if(m > c) m = c; if(m > d) m = d; return m; } int main() { int e1=1, e2=1, e3=1, e4=1; __int64 a1, a2, a3, a4; humble[1] = 1; for(int i=2; i<6000; ++i) { a1 = 2*humble[e1]; a2 = 3*humble[e2]; a3 = 5*humble[e3]; a4 = 7*humble[e4]; humble[i] = _min(a1, a2, a3, a4); if(humble[i] == a1) e1++; if(humble[i] == a2) e2++; if(humble[i] == a3) e3++; if(humble[i] == a4) e4++; } int n; while(scanf("%d", &n) && n) { if(n%100==11 || n%100==12 || n%100==13) printf("The %dth humble number is %d.\n", n, humble ); else if(n % 10 == 1) printf("The %dst humble number is %d.\n", n, humble ); else if(n % 10 == 2) printf("The %dnd humble number is %d.\n", n, humble ); else if(n % 10 == 3) printf("The %drd humble number is %d.\n", n, humble ); else printf("The %dth humble number is %d.\n", n, humble ); } return 0; }
相关文章推荐
- hdoj 1058 Humble Numbers
- HDOJ 1058Humble Numbers
- HDOJ(HDU).1058 Humble Numbers (DP)
- HDOJ 1058:Humble Numbers
- 寻找丑数问题 HDOJ 1058 Humble Numbers
- HDOJ 1058 - Humble Numbers 更新Treap模板..
- hdoj1058_Humble Numbers(dp)
- hdoj1058 Humble Numbers(值得注意的简单题)
- hdoj-1058-Humble Numbers【DP&】
- HDOJ 1058 Humble Numbers 杭电 ACM
- HDOJ 1058 Humble Numbers
- HDOJ 1058:Humble Numbers 寻找丑数问题 解题报告
- 寻找丑数问题 HDOJ 1058 Humble Numbers
- HDOJ1058 Humble Numbers DP简单题
- HDOJ 1058 Humble Numbers
- 【HDOJ】1058 Humble Numbers
- hdoj1058 Humble Numbers (排序)
- HDoj-1058-Humble Numbers
- HDOJ---1058 Humble Numbers[DP]
- HDOJ1058(Humble Numbers)dp