是不是gcd那里错了,我背的模板和你的不一样。你可以直接用__gcd(a,b)
by xiaoqi0 @ 2021-03-03 23:56:41
```cpp
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
```
by Reywmp @ 2021-03-04 07:39:06
@[阿尔托莉雅丶](/user/105820) $\gcd(x,y)$ 和 $\gcd(y,x\%y)$ 是相同的,为啥要在 $\gcd(y,x\%y)$ 后面再加上 $x/y*y$ 啊qwq
by vectorwyx @ 2021-03-04 07:49:09
@[阿尔托莉雅丶](/user/105820)
`if(x%y==0)`那儿应该`return y`吧
by oisdoaiu @ 2021-03-04 08:46:06
@[vectorwyx](/user/238408) 不不不你看一下题,这道题求的不是gcd
by oisdoaiu @ 2021-03-04 08:46:43
```
#include <iostream>
#include <algorithm>
using namespace std;
long long a, b;
long long gcd(long long x, long long y)
{
if(x % y == 0)
return x * 4;
else
return gcd(y, x % y) + x / y * y * 4;
}
int main(void)
{
cin >> a >> b;
if(a < b)
swap(a, b);
cout << gcd(a, b);
return 0;
}
```
我把*4提公因式这个放进去就对了
这个*4不能为什么不能提出来呢?
by 阿尔托莉雅丶 @ 2021-03-04 09:47:02
思路和题解里面递归求解是一样的
by 阿尔托莉雅丶 @ 2021-03-04 09:50:19
@[oisdoaiu](/user/56825) 考虑8 2这种输入
应该就是return x才对
by 阿尔托莉雅丶 @ 2021-03-04 09:54:41