阿里巴巴公开赛 HDU 3959 Board Game Dice(数学)

 题意有点绕,想了很久 , 还是求教金思密达才明白了题意 , 才出的这个题。

题目就是要找一个比N大的M^x,得到M^x*x/N的最简分数 , 根据样例,分子是1时不用处理,直接除去gcd就好

没估出范围,还是改成long long交的 , 后来试一下 int WA了。

#include <cstdio>

typedef long long typen;

typen gcd (typen a , typen b){
    return b?gcd(b,a%b):a;
}

typen n,m;
int main ()
{
    int cas;
    scanf("%d",&cas);
    for (int I=1 ; I<=cas ; ++I)
    {
        scanf("%I64d%I64d",&n,&m);
        typen x=1;
        typen tmp=m;
        for ( ; tmp<n ; ++x,tmp*=m);
        //printf("x=%d\n",x);
        typen p,q;
        p=tmp*x;q=n;
        typen d=gcd (p,q);
        printf("Case %d: %I64d/%I64d\n",I,p/d,q/d);
    }
    return 0;
}


 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值