杭电oj2030,考试前再好好看一遍

原文链接:https://blog.csdn.net/weixin_44774255/article/details/98533064
大体思路

1.运用最小公倍数等于两个数的乘积,再除与它们的最大公因数;

2.多个的最小公倍数可以利用两个求完得到的,在与另一个再求,反复调用即可;

3.要注意溢出的问题即1的公式先除在乘保证不会溢出;

代码如下:

#include “stdafx.h”
#include<stdio.h>
int gcd(int x, int y) {
if (y == 0)return x;
else return gcd(y, x%y);
}
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
int a[1000];
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);

	}
	for (int i = 0; i < n-1; i++)
	{
		a[i + 1] = a[i] / gcd(a[i], a[i + 1]) * a[i + 1];//防止溢出用,而不是写成a[i]) * a[i + 1] / gcd(a[i], a[i + 1],同时存在乘法和除法运算的式子里应该先写除法,避免过程溢出。
	}
	printf("%d\n", a[n - 1]);
}
return 0;

}

发布了43 篇原创文章 · 获赞 0 · 访问量 590

猜你喜欢

转载自blog.csdn.net/weixin_45191675/article/details/104795381