【OJ】1075: 多个数的最小公倍数

这个题目不难,时间复杂度可以在O(n)内搞定,具体分析见代码:

#include<stdio.h>

int gcd(int a, int b) {// 求a、b的最大公约数
	while (b != 0) {
		int r = a%b;
		a = b;
		b = r;
	}
	return a;
}


int main()
{
	int n;
	while (scanf("%d", &n) != EOF) {
		if (n == 0) break;
		int *a = new int[n];
		for (int i = 0; i < n; i++) {
			scanf("%d", &a[i]);
		}
		int ret = -1;
		for (int i = 0; i < n - 1; i++) {// 循环n-1次就好
			int t = a[i] * a[i + 1] / gcd(a[i], a[i + 1]);
			if (t > ret) { 
				ret = t;
			}
		}
		delete[]a;
		printf("%d\n", ret);
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/CholenMine/article/details/83184227
今日推荐