题目
题意
给出n个数字,当x>y时,x=x-y,问无法执行这个操作时数组的和。
模拟超时,后发现求最大公约数即可。
代码
#include<bits/stdc++.h>
using namespace std;
int n,s[100];
int gcd(int a,int b) {
return a==0?b:gcd(b%a,a);
}
int main() {
cin>>n;
for(int i=0; i<n; i++) {
cin>>s[i];
}
sort(s,s+n);
int t=gcd(s[0],s[1]);
for(int i=2; i<n; i++) {
t=gcd(t,s[i]);
}
printf("%d\n",n*t);
return 0;
}