HDU 5584 LCM Walk (2015ACM/ICPC亚洲区上海站)
2015-11-30 09:32
447 查看
题目链接
传送门题意
设当前的位置为(x,y),设l=LCM(x,y),下一步可以到达,(x+l,y),(x,y+l)告诉你终点的位置(x,y),问起点有多少种方案。分析
如果x<y,那么肯定是由(x,y′+z) ,z=LCM(x,y‘) ,z=k∗x设 t=GCD(x,y)
那么可以推出t=GCD(x,y′)
x∗(y−z)=z∗t
z=x∗yx+t
注意几个条件
x<y
zmod(x+t)=0
z>=x,z<y
zmod(y−z)=0
x!=y
Code
#include <bits/stdc++.h> using namespace std; int gcd(int a,int b){ if(b) return gcd(b,a%b); return a; } typedef long long LL; int main() { int t,cas=1; scanf("%d",&t); while(t--){ LL x,y; scanf("%lld%lld",&x,&y); int ans = 1; while(x!=y){ if(x>y) swap(x,y); int g=gcd(x,y); LL z = x*y/(x+g); if(x*y%(x+g)||z<x||z>=y||z%(y-z)||z%x) break; ans++; y=y-z; } printf("Case #%d: %d\n",cas++,ans); } return 0; }
相关文章推荐
- set echo on/off,set term on/off,set feedback off,set heading off命令
- 如何在Mac OS X上安装和使用Visual Studio Code和ASP.NET 5(转)
- iOS~block的使用
- Java IO Demo
- 为什么你把项目管理的书看完了还是不能带好一个团队?
- android中onActivityResult方法无法获取返回的resultCode和data问题
- 买啤酒问题
- android 异常处理----发送邮件
- js调用手机摄像头
- javascript闭包(Closure)用法实例简析
- 热学性质(二)
- LeetCode 129 Sum Root to Leaf Numbers
- COM组件
- android nfc P2P模式
- 基本语法元素
- Android Fragment中onActivityResult()方法获取不到返回数据或者无响应的解决办法
- Skype for business之Skype会议直播
- H5版本的CCBPM设计器将有哪些变化
- ASP.NET MVC- 在Area里使用RedirectToAction跳转出错的解决方法
- AppStore申请加急审核