牛客 黑妹的游戏
题意:
有三个不同的初始数字,每次可选择两个不同的数字,计算出他们之差的绝对值,如果没有这个数字,就加上,问最多可以添加多少个数
思路:
三个不同的数字相减,只能得到他们最大公约数的倍数
所以$ans = max(a, b, c) / gcd(a, b, c) - 3$ (减去$a, b, c$本身)
Code:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long ll; int t; ll a, b, c; ll gcd(ll a, ll b){ return b ? gcd(b, a % b) : a; } int main(){ cin >> t; while(t --){ cin >> a >> b >> c; ll ans = max(max(a, b), c); ans = ans / gcd(gcd(a, b), c) - 3; cout << ans << "\n"; } return 0; }