丑数(humble number) hdu 1058 DP

来源:互联网 发布:珠海网络教育 编辑:程序博客网 时间:2024/05/16 10:50
A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first 20 humble numbers.

Write a program to find and print the nth element in this sequence

#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 ans[6000];void fun(){    int a2,a3,a5,a7;    int n = 1;    ans[1] = 1;    a2 = a3 = a5 = a7 = 1;    while(ans[n] < 2000000000)    {        ans[++n] = min4(2*ans[a2],3*ans[a3],5*ans[a5],7*ans[a7]);        if(ans[n] == 2*ans[a2])            a2 += 1;        if(ans[n] == 3*ans[a3])            a3 += 1;        if(ans[n] == 5*ans[a5])            a5 += 1;        if(ans[n] == 7*ans[a7])            a7 += 1;    }}int main(){    int n,ten;    fun();    while(~scanf("%d",&n))    {        printf("The %d",n);        ten = n/10%10;        if(n%10 == 1 && ten != 1)            printf("st");        else if(n%10 == 2 && ten != 1)            printf("nd");        else if(n%10 == 3 && ten != 1)            printf("rd");        else            printf("th");        printf(" humble number is %d.\n",ans[n]);    }    return 0;}


0 0
原创粉丝点击