【杭电】[1722]Cake
2016-07-20 10:12
232 查看
其实找规律可以想出来
规律可以这么解释:如果要能把它分为等值的p份或q份,那么我们可以先分为d(最大公约数)=gcd(p,q)份,因为当你分为d份的时候,你可能选择将每份分为p/d份(也就是把整体分为p份),也可以选择将每份分为q/d份(也就是把整体分为p份),这两种选择里,肯定不会有切到相同位置的一刀!所以我们可以得到公式:s=p+q-gcd(p,q);
#include<stdio.h> int gcd(int a,int b) { if(b==0) return a; return gcd(b,a%b); } int main() { int n,m; while(scanf("%d %d",&n,&m)!=EOF) printf("%d\n",n+m-gcd(n,m)); return 0; }
题目地址:【杭电】[1722]Cake
相关文章推荐
- 高精度加法——杭电1002
- Hdu2066(一个人的旅行)
- 杭电1870 愚人节的礼物
- 关于杭电1405 The Last Practice 的问题
- hdu-1103 模拟题。
- hdu-1022 栈的应用。
- hdu-1247 简单map的应用。(字典树)
- hdu-1251 字典树公共前缀。
- hdu-1075 map映射表的应用。
- 杭电ACM Steps (1)
- hdu 1005 -- Number Sequence
- hdu 1007 -- Quoit Design
- 杭电1004
- 杭电1005
- 杭电1008
- c++编写藏手帕问题
- 杭电oj-1003
- 杭电oj-1004
- 杭电oj-1005
- 并查集示例1