Fox and Number Game 题解
题面翻译
有 N ( 1 ≤ N ≤ 100 ) N(1\leq N\leq 100) N(1≤N≤100)个数 x 1 , x 2 , . . , x n x_1,x_2,..,x_n x1,x2,..,xn。
可以根据需要多次执行以下操作:选择两个不同的下标 i i i 和 j j j,保持 x i > x j x_i > x_j xi>xj ,然后令 x i ← x i − x j x_i \gets x_i - x_j xi←xi−xj。
目标是使所有数字的总和尽可能小。
请找到这个最小的金额。
题目解析
通过分析,我们可以发现,其实这道题就是让求这
N
N
N个数的最大公因数。(别问我怎么分析的,我也不知道)
下面展示最大公因数代码
int gcd(int a,int b){//简单的压了一下行
return !b?a:gcd(b,a%b);
}
下面就是完整代码啦
#include<bits/stdc++.h>
using namespace std;
int n,a,sum;
int gcd(int a,int b){//最大公因数的函数
return !b?a:gcd(b,a%b);
}
int main()
{
cin>>n>>a;
sum=a;
for(int i=2;i<=n;++i)
{
cin>>a;
sum=gcd(sum,a);
}
cout<<sum*n<<endl;
return 0;
}