pku 2545 Hamming Problem

和pku1338(Ugly Numbers)差不多。。。

#include <stdio.h>

 

#define MAXN 100001 //没10^8那么大...

typedef long long LL;

LL n,a,b,c,ugly[MAXN]={1};

inline LL Min(LL a,LL b){return a<b?a:b;}
void solve()
{
    LL i,p1=0,p2=0,p3=0;
    for(i=1;i<=n;i++) //注意开始位置,从1开始
    {
        ugly[i] = Min( ugly[p1]*a, Min(ugly[p2]*b, ugly[p3]*c));
        if(ugly[i] == ugly[p1]*a) p1++;
        if(ugly[i] == ugly[p2]*b) p2++;
        if(ugly[i] == ugly[p3]*c) p3++;
    }
    printf("%I64d\n",ugly[n]);
}

int main()
{
    #ifndef ONLINE_JUDGE
    freopen("tdata.txt","r",stdin);
    #endif
    while(scanf("%I64d %I64d %I64d %I64d",&a,&b,&c,&n)!=EOF) solve();
    return 0;
}

posted @ 2010-09-11 12:19  菜到不得鸟  阅读(108)  评论(0)    收藏  举报