题目链接:Codeforces 389A Fox and Number Game
题目大意:给出n个数,执行n次操作,要求执行操作之后,使得这n个数的总和最小,操作是:取出小标i和j的数,如果有num[i] > num[j],则可以执行num[i] = num[i] - num[j]。
解题思路:因为只要有一大一小就肯定可以执行操作,所以到最后肯定剩下的数都是一样的,而且就是这些数的最大公约数。
#include <stdio.h>
#include <string.h>
const int N = 105;
int n, num[N];
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
int main () {
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", &num[i]);
int t = num[0];
for (int i = 1; i < n; i++) t = gcd(t, num[i]);
printf("%d\n", t * n);
return 0;
}