一类计算问题小结poj&hoj Set Definition ,Humble Numbers ,Ugly Numbers 因子构造法
2012-10-04 16:09
561 查看
/*这类问题都是给一些只能由某些特定因子乘积组成的数,然后求第n个数的大小。 做法就是每次用所给的条件来构造因子,预处理出前N项的值,复杂度O(N),查询复杂度O(1).*/ Set Definition.code #include <stdio.h> #include <iostream> using namespace std; int a[10000000]; int main() { a[1]=1; int n1=1,n2=1; for(int i=2;i<=10000000;i++) { a[i]=min(2*a[n1]+1,3*a[n2]+1); if(a[i]==2*a[n1]+1) n1++; if(a[i]==3*a[n2]+1) n2++; } int x; while(scanf("%d",&x)==1) { printf("%d\n",a[x]); } return 0; } Humble Numbers.code #include <stdio.h> #include <iostream> using namespace std; int a[6000]; int main() { a[1]=1; int n2=1,n3=1,n5=1,n7=1; for(int i=2; i<=5842; i++) { a[i]=min(min(a[n2]*2,a[n3]*3),min(a[n5]*5,a[n7]*7)); if(a[i]==a[n2]*2) n2++; if(a[i]==a[n3]*3) n3++; if(a[i]==a[n5]*5) n5++; if(a[i]==a[n7]*7) n7++; } int n; while(scanf("%d",&n)==1&&n) { if(n%10==1) { if(n%100!=11) printf("The %dst humble number is %d.\n",n,a ); else printf("The %dth humble number is %d.\n",n,a ); } else if(n%10==2) { if(n%100!=12) printf("The %dnd humble number is %d.\n",n,a ); else printf("The %dth humble number is %d.\n",n,a ); } else if(n%10==3) { if(n%100!=13) printf("The %drd humble number is %d.\n",n,a ); else printf("The %dth humble number is %d.\n",n,a ); } else printf("The %dth humble number is %d.\n",n,a ); } return 0; } Ugly Number.code #include <iostream> using namespace std; int main() { int number[1505]; int judge[3]; int i,j; int n; i=0; number[0]=1; while(i<=1500) { for( j=0;j<=i,number[j]*2<=number[i];j++); judge[0]=number[j]*2; for( j=0;j<=i,number[j]*3<=number[i];j++); judge[1]=number[j]*3; for( j=0;j<=i,number[j]*5<=number[i];j++); judge[2]=number[j]*5; number[i+1]=min(judge[0],min(judge[1],judge[2])); i++; } cout <<"The 1500'th ugly number is " << number[1499] << "." << endl; return 0; }
相关文章推荐
- JOJ 2109 && POJ 1981 Circle and Points 计算几何 单位圆覆盖问题
- hdoj Pipe&&南阳oj管道问题&&poj1039(计算几何问题...枚举)
- POJ 2247 Humble Numbers
- UVa 443 / POJ 2247 Humble Numbers (4因子-丑数&STL灵活运用)
- POJ 2247 && HDU 1058 Humble Numbers(数论)
- usaco-3.1-Humble Numbers-<set的使用>
- Ant问题:warning: 'includeantruntime' was not set
- POJ 2247 Humble Numbers
- Ant问题:warning: 'includeantruntime' was not set
- error C2011: 'fd_set' : 'struct' type redefinition问题
- Java中文&编码问题小结
- POJ 1077 Eight && HDU 1043 Eight 八数码问题(A*算法)
- poj 3984 迷宫问题 学会了一招计算路径
- js计算精度问题小结
- hdu 2224 && poj 2677 (旅行商问题)
- Square DFS poj&hoj
- poj 2739 Sum of Consecutive Prime Numbers 小结
- nyoj-47-过河问题&&poj-1700-Crossing River
- 这个问题要求你写一个程序来计算的确切价值Rnwhere R是一个实数(0.0 < R < 99.999)和n是一个整数,0 < n < = 25。
- Ant问题:warning: 'includeantruntime' was not set