您的位置:首页 > 其它

hdu 1058

2015-09-06 21:14 197 查看
点击打开链接

题意:只有2,3,5,7这几个质因子的数成为丑数,找出前5842个丑数

题目较水,这里说一点需要注意的地方,计算所有丑数时的if语句是并列的,不能用else if 这种形式,目的是为了排除相同的情况,具体可用 2,3分别乘以3 , 2进行一下推理

#include <iostream>
#include <stdio.h>
#include <cstring>
#include <cmath>
#define  min4(a,b,c,d) min(min(a,b),min(c,d))
using namespace std;
int a[6000];
int n;
int p2,p3,p5,p7;//计数
int main()
{
freopen("in.txt","r",stdin);
p2=p3=p5=p7=1;
n=1;
a[1]=1;
while(a
<=2000000000&&n<6000)
{
a[++n]=min4(a[p2]*2,a[p3]*3,a[p5]*5,a[p7]*7);
if(a
==a[p2]*2)
p2++;
if(a
==a[p3]*3)
p3++;
if(a
==a[p5]*5)
p5++;
if(a
==a[p7]*7)
p7++;
}
while(scanf("%d",&n)!=EOF&&n)
{
printf("The %d",n);
if(n%10==1&&(n%100)/10!=1)
printf("st");
else if(n%10==2&&(n%100)/10!=1)
printf("nd");
else if(n%10==3&&(n%100)/10!=1)
printf("rd");
else
printf("th");
printf(" humble number is %d.\n",a
);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: