题目链接:https://atcoder.jp/contests/arc105/tasks/arc105_b
题意:给定n个数字,有两个操作:第一个就是将最大值的数字更新为最大值-最小值,第二个就是当所有数字都相同时,退出程序,输出此时的值。
解题思路:由于gcd(x,y) = gcd(x, y - x),于是我们就可以找出这n个数字的最大公约数a,这样就能使得每一个数字再减去不同次的a后,都变得相同。
#include <bits/stdc++.h> using namespace std; int main() { int n, g = 0; cin >> n; for(int i = 1; i <= n; i++) { int x; cin >> x; g = __gcd(x, g); } cout << g << endl; return 0; }