Problem Description
一次生日Party可能有p人或者q人参加,现准备有一个大蛋糕.问最少要将蛋糕切成多少块(每块大小不一定相等),才能使p人或者q人出席的任何一种情况,都能平均将蛋糕分食.
|
Input
每行有两个数p和q.
|
Output
输出最少要将蛋糕切成多少块. |
Sample Input
2 3 |
Sample Output
4
实在想不出来,从网上看的题解,看的也一知半解的,找了好几个感觉下面这个解释挺好的。
将蛋糕切成几块,我想可以把它理解为切多少刀更加易懂。开始思考的是依照蛋糕的大小来计算,结果涉及到了浮点型数据处理,求余,求商等让人很乱,结果当然也不能AC,所以果断弃了。 一个数a的因数b,放在这道题中可以使人理解成,想要把蛋糕分成a块,先切b刀,(一次切的长度为蛋糕的半径)再在剩余的b份中,平均分成a/b份,每份需要再切a/b-1刀,其余蛋糕切a-b刀,共切a刀。 而如果另一个数c与a有公因数b,则设第一次切好后蛋糕摆放没有变,则需要先切b刀,在平均每份切c/b-1刀,共再切c-b刀,而为了达到块数最小,尽量使用第一次切好的刀缝。第一次的b刀已经不用切取。故最终需要切a+c-d次,分成a+c-d块。 由此可见,为了得到最小块数,需要d最大,是两个数的最大公约数。
|
Cake
最新推荐文章于 2020-03-06 11:39:21 发布