gpt4 book ai didi

c++ - 使用 a 升和 b 升(算法)测量 c 升

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:08:13 24 4
gpt4 key购买 nike

<分区>

假设有两个水 jar 一升和 b 升,我必须使用和 b 来测量 c 升,如果 c % gcd(a,b)!=0,我无法测量 c。对于例如,如果 a=21 和 b=27,我无法测量 10 升。有人可以解释这背后的直觉吗?提前致谢自动更正

这就是问题 https://www.codechef.com/problems/POUR1

这是被接受的代码

查看主语句 if (c % __gcd(a, b) || c > max(a, b))他正在打印 -1,因为这是不可能的

    #include<bits/stdc++.h>
using namespace std;

//int aa,bb,cc;

int process(int a, int b, int c)
{
int sum = 1, aa = a, bb = 0;
while (a != c and b != c) {
int f = min(aa, b - bb);
bb += f;
aa -= f;
sum++;
if (aa == c || bb == c)
break;
if (aa == 0)
aa = a, sum++;
if (bb == b)
bb = 0, sum++;
}
return sum;
}

main()
{
int t, a, b, c;
cin >> t;
while (t--) {
cin >> a >> b >> c;
//cerr << (c % __gcd(a,b)) <<'\n';
//int aa = a , bb = b;
if (c % __gcd(a, b) || c > max(a, b))
cout << -1 << '\n';
else if (c == a || c == b)
cout << 1 << '\n';
else
cout << min(process(a, b, c), process(b, a, c)) << '\n';
}
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com