倒水问题

   上题。

       题目详情:

   有两个容器,容积分别为A升和B升,有无限多的水,现在需要C升水。

   我们还有一个足够大的水缸,足够容纳C升水。起初它是空的,我们只能往水缸里倒入水,而不能倒出。

   可以进行的操作是:

    1. 把一个容器灌满;

    2. 把一个容器清空(容器里剩余的水全部倒掉,或者倒入水缸);

    3. 用一个容器的水倒入另外一个容器,直到倒出水的容器空或者倒入水的容器满。

    问是否能够通过有限次操作,使得水缸最后恰好有C升水。


   输入:三个整数A, B, C,其中 0 < A , B, C <= 1000000000

   输出:0或1,表示能否达到要求。




int gcd(int a,int b)
{
    if(a<b)return gcd(b,a);
    if(b==0)return a;
    return gcd(b,a%b); 
}
                                 
                                 
bool can(int a,int b,int c) {
    int m=gcd(a,b);
    if(c%m==0)
        return true;
    else
        return false;
}


int mod(int a,int b)
{
    return b?mod(b, a%b):a; 
}
              
bool can(int a,int b,int c) {
    int res;
    res=mod(a,b);
                
    if(c%res==0)
        return true;
    else
        return false;
}



本文出自 “淡定的dreamer” 博客,请务必保留此出处http://idiotxl1020.blog.51cto.com/6419277/1290279

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值