hdu/hdoj 1058 Humble Numbers
来源:互联网 发布:lolvsdota 知乎 编辑:程序博客网 时间:2024/05/21 10:30
这个题可能没用到什么数论的知识,但需要一点 对 素数分解的知识;
知道这个素数可以表示成 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[n]); else if(n % 10 == 1) printf("The %dst humble number is %d.\n", n, humble[n]); else if(n % 10 == 2) printf("The %dnd humble number is %d.\n", n, humble[n]); else if(n % 10 == 3) printf("The %drd humble number is %d.\n", n, humble[n]); else printf("The %dth humble number is %d.\n", n, humble[n]); } return 0;}
- hdu/hdoj 1058 Humble Numbers
- HDOJ(HDU).1058 Humble Numbers (DP)
- HDOJ 1058:Humble Numbers
- hdoj 1058 Humble Numbers
- HDOJ 1058 Humble Numbers
- HDOJ 1058 Humble Numbers
- 【HDOJ】1058 -> Humble Numbers
- HDOJ 1058 Humble Numbers
- HDoj-1058-Humble Numbers
- hdoj 1058 Humble Numbers
- HDOJ Humble Numbers 1058
- HDOJ 1058Humble Numbers
- hdoj 1058 Humble Numbers (*)
- hdoj-【1058 Humble Numbers】
- HDOJ 1058 Humble Numbers
- HDU 1058 Humble Numbers
- hdu 1058 Humble Numbers
- hdu 1058 Humble Numbers
- js实现页面跳转的几种方式
- 设计之路:如何进行软件需求分析?
- unbuntu安装apache2
- 十年程序员总结经验
- exercises2.2
- hdu/hdoj 1058 Humble Numbers
- 再说mochiweb
- 详解JAVA中extends 与implements
- poj 2993 Emag eht htiw Em Pleh
- 二叉树的各种操作_源代码
- indows上的android开发环境软件架构5
- 内存中的一点知识
- Web Tracing Framework
- poj 1949 拓扑排序