丑数
时间限制(普通/Java) :
1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 156 测试通过 : 49
总提交 : 156 测试通过 : 49
比赛描述
丑数是指素因子都在集合{2,3,5,7}的数,如630是丑数,而22不是。
输入
输入n(<=5911)
输出
输出第n大的丑数。
样例输入
100
样例输出
450
提示
题目来源
JSOI2010
#include<stdio.h>
long long a[6000];
int main(){
int n;
a[0] = 1;
int p2,p3,p5,p7;
p2 = p3 = p5 = p7 = 0;
int i=0;
scanf("%d",&n);
n--;
while(i<n){
while(a[p2]*2<=a[i]){
p2++;
}
while(a[p3]*3<=a[i]){
p3++;
}
while(a[p5]*5<=a[i]){
p5++;
}
while(a[p7]*7<=a[i]){
p7++;
}
i++;
a[i] = a[p2]*2;
if(a[i] > a[p3]*3){
a[i] = a[p3]*3;
}
if(a[i] > a[p5]*5){
a[i] = a[p5]*5;
}
if(a[i] > a[p7]*7){
a[i] = a[p7]*7;
}
}
printf("%I64d\n",a[n]);
}