感觉被这道题欺负了。。。。
非常感谢来自小牛的思路 HDU 1722
举个简单的栗子,4和6,切好之后的简图如下:
画图不太好看,意思大概够了就可以吧。。。绿线是切4刀,红线切6刀,顺时针从圆心出发切。一共切了10刀,其中两条线(90°,270°)重合,都保留其一即可。
这就是所谓的计算公式
p+q-gcd(p,q)
这道题就解决了。
最后附上AC代码,没几行:
#include<iostream>
using namespace std;
//#include<cmath>
int GCD(int a, int b) //最大公约
{
return b != 0 ? GCD(b, a%b) : a;
}
int main()
{
int p, q;
while (cin>>p>>q)
{
cout << p + q - GCD(p, q) << endl;
}
system("pause");
return 0;
}
之前没怎么做过数论的题,一直在练数据结构的题,现在感觉数论的知识特别薄弱,还需要多多刷题。。。