`
阿尔萨斯
  • 浏览: 4149221 次
社区版块
存档分类
最新评论

Codeforces 389A Fox and Number Game(欧几里得求最大公约数)

 
阅读更多

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


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics