首页 > ACM题库 > HDU-杭电 > hdu 2028 Lowest Common Multiple Plus[解题报告]
2013
12-26

hdu 2028 Lowest Common Multiple Plus[解题报告]

Lowest Common Multiple Plus

问题描述 :

求n个数的最小公倍数。

输入:

输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。

输出:

输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。

样例输入:

2 4 6
3 2 5 7

样例输出:

12
70

题目:HDU2028  Lowest Common Multiple Plus

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2028

要点:

  1. 在题目的诱导下没怎么像就用了int,结果计算最大公约数时越界(#°Д°) !

感想:

  1. 这是道水题  (  ′д` )…
  2. Σ(っ °Д °;)っ   我更水。

代码:

#include<stdio.h>
#include<stdlib.h>
int  LCM(int a,int b)
{
	int x;
	while (a%b)
	{
		x = b;
		b = a%b;
		a = x;
	}
	return b;
}
int main()
{
	int a[101], s = 1, n, i;
	while(scanf("%d", &n)!=EOF)
	{
		s = 1;
		for(i=0;i<n;i++)
			scanf("%d", &a[i]);
		for(i=0;i<n;i++)
			s = s/LCM(s,a[i])*a[i];
		printf("%d\n", s);
	}
}

解题转自:http://blog.csdn.net/gokou_ruri/article/details/7423793


  1. 第二个方法挺不错。NewHead代表新的头节点,通过递归找到最后一个节点之后,就把这个节点赋给NewHead,然后一直返回返回,中途这个值是没有变化的,一边返回一边把相应的指针方向颠倒,最后结束时返回新的头节点到主函数。