HDU ACM Steps:Cake

人盡茶涼 提交于 2020-03-01 04:05:01

HDU ACM Steps:Cake

题目描述

一次生日Party可能有p人或者q人参加,现准备有一个大蛋糕.问最少要将蛋糕切成多少块(每块大小不一定相等),才能使p人或者q人出席的任何一种情况,都能平均将蛋糕分食.

输入

每行有两个数p和q.

输出

输出最少要将蛋糕切成多少块

输入样例

2 3

输出样例

4
提示
将蛋糕切成大小分别为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块

思路

这道题有一定思维难度,首先我们要认为蛋糕是圆形的,这样切了多少刀就会有多少份蛋糕。
先把一个蛋糕均匀切成2份,再拿另外一个蛋糕切成3份,再把两个蛋糕重合在一起,可以发现切的线有些可以重合。而重合部分就是我们可以少切的刀数,也就是gcd(2,3)(可以通过相遇周期理解)。
因此可以得到这道题的公式a+b-gcd(a,b)。

代码

#include<stdio.h>

int a,b; 

int gcd(int x,int y)
{
	return y ? gcd(y,x%y) : x;
}

int main()
{
	while(~scanf("%d %d",&a,&b))
	{
		printf("%d\n",a+b-gcd(a,b));
	}
	return 0;
 } 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!