HDU 1058 DP

来源:互联网 发布:做淘宝直通车和刷流量 编辑:程序博客网 时间:2024/05/16 02:29
#include"iostream" //410ms#include"stdio.h"using namespace std;typedef long long ll;const ll INF=2000000000+10;ll f[5843];int prime[4]={7,5,3,2};void m_list(){    f[1]=1;f[2]=2;f[3]=3;f[4]=4;f[5]=5;    int i,j,k;    for(i=6;i<=5842;i++)    {        f[i]=INF;        for(j=i-1;j>=1;j--) //逆序枚举从大到小逼近,相乘大于a[i-1]取最小的数        {            for(k=0;k<4;k++)            {                if(f[j]*prime[k]<=f[i-1]) break;                f[i]=min(f[i],f[j]*prime[k]);            }        }    }}int main(){    m_list();    int n;    while(cin>>n,n)    {        putchar('T');putchar('h');putchar('e');putchar(' ');        printf("%d",n);        if(n%10==1&&n%100!=11){putchar('s');putchar('t');}        else if(n%10==2&&n%100!=12){putchar('n');putchar('d');}        else if(n%10==3&&n%100!=13){putchar('r');putchar('d');}        else {putchar('t');putchar('h');}        putchar(' ');putchar('h');putchar('u');putchar('m');putchar('b');        putchar('l');putchar('e');putchar(' ');        putchar('n');putchar('u');putchar('m');        putchar('b');putchar('e');putchar('r');putchar(' ');putchar('i');        putchar('s');putchar(' ');        printf("%lld",f[n]);        putchar('.');putchar('\n');    }    return 0;}



#include"iostream" //140ms#include"stdio.h"using namespace std;typedef long long ll;const ll INF=2000000000+10;ll f[5843];int prime[4]={2,3,5,7};void m_list(){    f[1]=1;f[2]=2;f[3]=3;f[4]=4;f[5]=5;    int i,j,k;    for(i=6;i<=5842;i++)    {        f[i]=INF;        for(j=0;j<4;j++)            for(k=i-1;k>=1;k--)            {                if(f[k]*prime[j]<=f[i-1]) break;                if(f[k]*prime[j]<f[i]) f[i]=f[k]*prime[j];            }    }}int main(){    m_list();    int n;    while(scanf("%d",&n)&&n)    {        printf("The %d",n);        if(n%10==1&&n%100!=11)printf("st");        else if(n%10==2&&n%100!=12)printf("nd");        else if(n%10==3&&n%100!=13) printf("rd");        else printf("th");        printf(" humble number is %lld.\n",f[n]);    }    return 0;}


0 0