Oj之路(第三天)

今天先寫了一道很簡單的題目,需要掌握的也就一個知識點:

那就是用歐幾里得算法來求最大公約數,用兩數之積除以兩數最大公約數求最小公倍數。沒了~~~~~~~~~~~

================================================================================================================

題目描述:

給定六個正整數a,b,c,d,e,f;問你是否存在整數既是a,b,c的最大公約的倍數,同時又是d,e,f的最小公倍數的約數。 
輸入格式
輸入爲多case輸入,每個case只有一行,每行六個正整數。當輸入6個0時結束。
輸出格式
存在輸出YES,否則輸出:NO
輸入樣例
32 40 16 20 30 24
0 0 0 0 0 0
輸出樣例
YES 
提示
32,40,16的最大公約數是:8;而20,30,24的最小公倍數爲120,顯然存在整數(如24),既是8的倍數,又是120的約數 

================================================================================================================

注意細節:

這裏的變量定義需要用long long才能,因爲有些數的最小公倍數實在是很大-----------------------------------------------實在是坑

================================================================================================================

源代碼:
#include <stdio.h>

int fun(int a, int b)
{
	int tmp;
	while (b != 0) {
		tmp = a % b;
		a = b;
		b = tmp;
	}
	return a;
}
int main()
{
	long long a, b, c, d, e, f;
	long long m, n;
	while (scanf("%lld%lld%lld%lld%lld%lld", &a, &b, &c, &d, &e, &f) && a != 0) {
		m = fun(fun(a, b), c);
		n = d * e / fun(d, e) * f / fun(d * e / fun(d, e), f);
		if (n % m == 0)
			printf("YES\n");
		else
			printf("NO\n");
	}
	return 0;
}

================================================================================================================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章