poj 2247 Humble Numbers
2011-07-20 22:50
393 查看
#include <iostream> using namespace std; int start[4],prime[5843]={1}; int factor[4]={2,3,5,7}; int main() { int i,j,min; for(i=1;i<=5842;i++) { min=2000000001; for(j=0;j<4;j++) if(prime[start[j]]*factor[j]<=min) //不要漏掉=的情况 min=prime[start[j]]*factor[j]; prime[i]=min; for(j=0;j<4;j++) if(prime[start[j]]*factor[j]==min) start[j]++; } char suffix[4][3]={"st","nd","rd","th"}; int num,flag; while(scanf("%d",&num)&&num) { if(num%10==1&&num%100!=11) flag=0; else if(num%10==2&&num%100!=12) flag=1; else if(num%10==3&&num%100!=13) flag=2; else flag=3; printf("The %d%s humble number is %d.\n",num,suffix[flag],prime[num-1]); } return 0; } //一个humble数的{2,3,5,7}的积一定是一个humble,那么找出他们其中最小的作为新的humble。 //为了加快搜索过程,可以使用一个素数集大小的数组记录这个素数与某个humble的积<=当前最大humble的最大的位置,这样可以过滤掉小的数, //而且这个最大的humble的位置的下一个数和这个素数的乘积就是这个素数能产生的最小的未生成的humble, //比较每个素数能产生的最小的humble,选一个最小的作为新的humble。
相关文章推荐
- poj 2247 Humble Numbers
- poj 2247 Humble Numbers
- poj 2247 Humble Numbers
- POJ 2247 Humble Numbers
- POJ 2247 Humble Numbers
- poj 1338 ugly numbers和poj 2247Humble Numbers 解题报告(附详细分析)
- POJ 2247 && HDU 1058 Humble Numbers(数论)
- poj 2247 Humble Numbers
- 一类计算问题小结poj&hoj Set Definition ,Humble Numbers ,Ugly Numbers 因子构造法
- POJ 2247 Humble Numbers
- POJ 2247 Humble Numble(我的水题之路——丑数2,3,5,7)
- hdu 1058 Humble Numbers || poj 1338(dp)
- UVa 443 / POJ 2247 Humble Numbers (4因子-丑数&STL灵活运用)
- PKU 2247 Humble Numbers
- poj 3292 Semi-prime H-numbers
- 【转载】丑数humble numbers
- HDU 1492 The number of divisors(约数) about Humble Numbers(数论,简单约数)
- hdu/hdoj 1058 Humble Numbers
- POJ 2739 Sum of Consecutive Prime Numbers
- HDU 1058 Humble Numbers(dp)