zoj 1797 Least Common Multiple(继续,水题,想说爱你不容易!)

求几个数的最小公倍数。。。

 

这个题,我们大一上学期期末考试考过,当时还不会做 = = YM。。。

 

求三个数的最小公倍数,直接求前两个数的最小公倍数,然后再和第三个数求最小公倍数,求出即可。

 

WA得比较YM,因为没考虑n == 1 和 temp == 0 的问题,如果temp == 0 ,就不能当除数了!!

 

哎。 

 

gcd算法一次成功,挺有成就感 ^

 

#include <stdio.h> #include <stdlib.h> #include <iostream> #include <memory.h> #define MAX 10001 using namespace std; long long int gcd(long long int x,long long int y) { return y == 0? x : gcd(y,x%y); } int main(void) { int num[MAX]; int ncases,n; scanf("%d",&ncases); while( ncases -- ) { scanf("%d",&n); for(int i=0; i<n; i++) scanf("%d",&num[i]); if( n == 1 ) { printf("%d/n",num[0]); continue; } int temp = gcd(num[0],num[1]); if(temp == 0 ) { printf("%d/n",temp); continue; } temp = num[0]/temp*num[1]; for(int i=2; i<n; i++) { int x = gcd(temp,num[i]); if( x == 0 ) { temp = 0; break; } temp = temp/x*num[i]; } printf("%d/n",temp); } return 0; }  

你可能感兴趣的:(算法)