关闭

欧几里得算法及其应用

标签: 倒水问题 欧几里得算法算法应用gcd
398人阅读 评论(0) 收藏 举报
分类:

对于不完全为0的非负整数a,b,c,gcd(a,b)表示a,b的最大公约数,必然存在整数x,y,使得gcd(a,b)=ax+by;



//最大公约数


int mod(int a,int b)//取模

{

return b?mod(b,a%b):a;

}

倒水问题

有两个容器,容积分别为A升和B升,有无限多的水,现在需要C升水。 我们还有一个足够大的水缸,足够容纳C升水。起初它是空的,我们只能往水缸里倒入水,而不能倒出。 可以进行的操作是: 把一个容器灌满; 把一个容器清空(容器里剩余的水全部倒掉,或者倒入水缸); 用一个容器的水倒入另外一个容器,直到倒出水的容器空或者倒入水的容器满。     问是否能够通过有限次操作,使得水缸最后恰好有C升水。 输入:三个整数A, B, C,其中 0 < A , B, C <= 1000000000 输出:0或1,表示能否达到要求。


bool can(int a,int b,int c) {
int res;
res=mod(a,b);

if(c%res==0)
return true;
else
return false;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15323次
    • 积分:375
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:2篇
    • 译文:2篇
    • 评论:3条
    最新评论