hdoj 1058 Humble Number
来源:互联网 发布:warframe下载数据损坏 编辑:程序博客网 时间:2024/05/17 02:50
主要的思想就是dp, 转移方程不大明显,但是比较容易想。 下一个丑数由之前的丑数乘{2,3,5,7}中最小且大于上一个数的数得到。先把所有数算出来然后打表输出。输出太恶心了,还考人英语。。
/*PROG: humble numberLANG: C++11 */#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <cstdlib>#include <climits>#include <ctype.h>#include <queue>#include <stack>#include <vector>#include <utility>#include <deque>#include <set>#include <map>#include <iostream>#include <fstream>#include <algorithm>#include <time.h>using namespace std;#define mst(a,b) memset(a,b,sizeof(a))#define eps 10e-8typedef long long ll;const int N = 100010;const ll MOD = 1000000007;const int INF = 0x7fffffff;ll humble[6000];int prime [4]= {2,3,5,7};int main(){int n, i, j, k; ll cur, minn; int maxn = 5842; humble[1] = 1; humble[2] = 2; for(i = 3; i <= maxn; i++){ minn = INF; k = 1; for(j = 0; j < 4; j++){ for(; k < i; k++){<span style="white-space:pre"></span>// instead of making k = 1 every time cur = prime[j] * humble[i-k]; // because prime is in increasing order if(cur <= humble[i-1]) break; minn = min(minn, cur); } } humble[i] = minn; } while(scanf("%d", &n)){ if(!n) break; cout << "The " << n; if(n%10 ==1 && n%100 != 11) cout << "st humble number is "; else if(n%10 == 2 && n%100 != 12) cout << "nd humble number is "; else if(n%10 ==3 && n%100 != 13) cout << "rd humble number is "; else cout << "th humble number is "; cout << humble[n] << "." << endl; } return 0;}
中间剪枝了一下,比网上流行的算法稍微快一点
0 0
- hdoj 1058 Humble Number
- 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
- humble number hdu 1058
- hdu 1058 humble number
- HDU 1058 Humble Number
- hdu 1058 Humble Number
- IP协议---报文头部
- 基于stm32f103的矩阵键盘
- Git的用法、源码隐藏资源的积累收藏
- qt关闭窗口控件命令
- 修改mysql中root的初始化密码
- hdoj 1058 Humble Number
- php 封装alert方法
- Java操作excel的综合应用(jxl)
- RPM方式安装MySQL5.6
- Xcode6下iOS8地图无法定位问题Trying to start MapKit location updates without prompting for location authorizat
- 日期转string类型
- eMule学习笔记一
- JVM GC log file configuration
- linux 解压/压缩 常用命令