您的位置:首页 > 其它

hdu 1722 Cake

2016-02-23 12:42 162 查看
思路:最大公约数 + 数学公式

具体做法:p+q-gcd(p,q)

至于为什么gcd(p,q)是两种切法的公共部分:可以这么考虑,k=gcd(p,q),1/k可以整除1/p和1/q,即将蛋糕切成k份,无论是切p份还是切q份都可以满足要求,切痕重合。

#include <iostream>
#include <algorithm>

using namespace std;
int gcd(int m,int n)
{
if(m%n==0) return n;
else
gcd(n,m%n);
}
int lcm(int m,int n)
{
return m/gcd(m,n)*n;
}
int main()
{
int a,b,p,q,num;
while(cin>>p>>q)
{

a = min(p,q);
b = p+q-a;
num = lcm(a,b)/b*(b-a) +a;
cout << num << endl;
}//cout << "Hello world!" << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: