您的位置:首页 > 其它

2016sdau课程练习专题三 1004

2016-05-28 12:20 211 查看
1.题目编号

1004

2.简单题意

若一个数的所有素因子是2、3、5、7中的一个或多个,则这个数成为Humble数。求第n个Humble数是多少?

3.解题思路

若一个数是Humble数,则它的2、3、5、7倍仍然是Humble数。设a[i]为第i个Humble数,则a
= min(2*a[b2], 3*a[b3], 5*a[b5], 7*a[b7]), b2、b3、b5、b7在不断更新。
4.
数太大了哦
5.代码
#include<iostream>

#include<stdio.h>

#define min(a,b) (a<b?a:b)

#define min4(a,b,c,d) min(min(a,b),min(c,d))

int a[6000];

int main()

{

    int n=1;

    int p1,p2,p3,p4;

    p1=p2=p3=p4=1;

    a[1]=1;

    while(a
<2000000000)

    {

        a[++n] = min4(2*a[p1],3*a[p2],5*a[p3],7*a[p4]);

        if(a
==2*a[p1]) p1++;

        if(a
==3*a[p2]) p2++;

        if(a
==5*a[p3]) p3++;

        if(a
==7*a[p4]) p4++;

    }

    while(scanf("%d",&n) && n)

    {

        if(n%10 == 1&&n%100!=11)

        printf("The %dst humble number is ",n);

        else if(n%10 == 2&&n%100!=12)

        printf("The %dnd humble number is ",n);

        else if(n%10 == 3&&n%100!=13)

        printf("The %drd humble number is ",n);

        else

        printf("The %dth humble number is ",n);

        printf("%d.\n",a
);

    }

    return 0;

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