牛客 黑妹的游戏

题意:

有三个不同的初始数字,每次可选择两个不同的数字,计算出他们之差的绝对值,如果没有这个数字,就加上,问最多可以添加多少个数

思路:

三个不同的数字相减,只能得到他们最大公约数的倍数

所以$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;
}

猜你喜欢

转载自www.cnblogs.com/jungu/p/13389410.html
今日推荐