题目链接: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; }