HDU1722 切蛋糕家族的題

題意:
一次生日Party可能有p人或者q人蔘加,現準備有一個大蛋糕.問最少要將蛋糕切成多少塊(每塊大小不一定相等),才能使p人或者q人出席的任何一種情況,都能平均將蛋糕分食. 
例如:
p = 2,q = 3
將蛋糕切成大小分別爲1/3,1/3,1/6,1/6的四塊即滿足要求.當2個人來時,每人可以喫1/3+1/6=1/2 , 1/2塊。當3個人來時,每人可以喫1/6+1/6=1/3 , 1/3, 1/3塊。

想了挺久,覺得與lcm聯繫起來,胸有成竹地覺得過得樣例沒問題,交上去WA了。百度了分AC代碼,與自己的WA代碼對拍,發現我的代碼在q,p都爲奇數時存在bug,好吧...
題解:模擬q = 4,p = 6時切蛋糕的過程,發現把蛋糕平分4分需要4到,把蛋糕平分6分需要6刀,但是我們發現有兩條線重複地切了2次,應該減掉毫無必要的2刀,所以算式即爲p+q-gcd(p,q)。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int gcd(int a,int b){
	return (b == 0)? a : gcd(b,a%b);
}
/*int getLcm(int a,int b){
	return a/gcd(a,b)*b;
}*/
int main(){
	//freopen("F://duipai//data.txt","r",stdin);
	//freopen("F://duipai//out1.txt","w",stdout);
	int p,q;
	while(~scanf("%d%d",&p,&q)){
		printf("%d\n",p+q-gcd(p,q));
	}
	return 0;
}



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