HDU

来源:互联网 发布:网络市场监管专项行动 编辑:程序博客网 时间:2024/06/05 06:36

感觉被这道题欺负了。。。。

非常感谢来自小牛的思路 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;}

之前没怎么做过数论的题,一直在练数据结构的题,现在感觉数论的知识特别薄弱,还需要多多刷题。。。