HDU 5584 LCM Walk(逆推)——2015ACM/ICPC亚洲区上海站
来源:互联网 发布:买逆战武器淘宝买 编辑:程序博客网 时间:2024/04/30 00:36
LCM Walk
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 0 Accepted Submission(s): 0
Problem Description
A frog has just learned some number theory, and can't wait to show his ability to his girlfriend.
Now the frog is sitting on a grid map of infinite rows and columns. Rows are numbered1,2,⋯ from the bottom, so are the columns. At first the frog is sitting at grid (sx,sy) , and begins his journey.
To show his girlfriend his talents in math, he uses a special way of jump. If currently the frog is at the grid(x,y) , first of all, he will find the minimum z that can be divided by both x and y , and jump exactly z steps to the up, or to the right. So the next possible grid will be (x+z,y) , or (x,y+z) .
After a finite number of steps (perhaps zero), he finally finishes at grid(ex,ey) . However, he is too tired and he forgets the position of his starting grid!
It will be too stupid to check each grid one by one, so please tell the frog the number of possible starting grids that can reach(ex,ey) !
Now the frog is sitting on a grid map of infinite rows and columns. Rows are numbered
To show his girlfriend his talents in math, he uses a special way of jump. If currently the frog is at the grid
After a finite number of steps (perhaps zero), he finally finishes at grid
It will be too stupid to check each grid one by one, so please tell the frog the number of possible starting grids that can reach
Input
First line contains an integer T , which indicates the number of test cases.
Every test case contains two integersex and ey , which is the destination grid.
⋅ 1≤T≤1000 .
⋅ 1≤ex,ey≤109 .
Every test case contains two integers
Output
For every test case, you should output "Case #x: y", where x indicates the case number and counts from 1 and y is the number of possible starting grids.
Sample Input
36 106 82 8
Sample Output
Case #1: 1Case #2: 2Case #3: 3
题意:有一只青蛙,它从起点(x,y)出发,每次它会走LCM(x,y)步[LCM(x,y)就是x,y的最小公倍数]到达点(x+LCM(x,y),y)或点(x,y+LCM(x,y)),最终,它会到达点(ex,ey),现给你终点(ex,ey),要你求出它的起点有多少种可能
解题思路:我们暂时假设x,y的最大公约数gcd(x,y)=k,那么我们不妨用来表示x,用来表示y,那么新得到的点必定是或,因为x与y的最小公倍数
我们不妨求解一下新的点x和y的gcd值,以点为例
因为和时互质的,和也是互质的,故
所以,我们可以发现先得到的点和原来的点有相同的最大公约数,故我们可以利用这一点来根据终点求解原先的起点
还有一点需要提及的是,对于当前点(x,y),x,y中小的那个值必定是之前那个点中的x值或y值,故我们可以开始逆推了
有不懂的地方欢迎交流
#pragma comment(linker, "/STACK:1024000000,1024000000")#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>#include<stack>#include<math.h>#include<vector>#include<map>#include<set>#include<cmath>#include<string>#include<algorithm>#include<iostream>#define exp 1e-10using namespace std;const int N = 100005;const int M = 10005;const int inf = 1000000000;const int mod = 10007;int gcd(int x,int y){ if(x%y) return gcd(y,x%y); return y;}int main(){ int t,k,c,p=1,x,y; scanf("%d",&t); while(t--) { c=1; scanf("%d%d",&x,&y); if(x>y) swap(x,y); k=gcd(x,y); while(y%(x+k)==0) { c++; y=y/(x/k+1); if(x>y) swap(x,y); k=gcd(x,y); } printf("Case #%d: %d\n",p++,c); } return 0;}菜鸟成长记
0 0
- HDU 5584 LCM Walk(逆推)——2015ACM/ICPC亚洲区上海站
- 【HDU 5584】 LCM Walk(逆推)——2015ACM/ICPC亚洲区上海站
- HDU 5584 LCM Walk (2015ACM/ICPC亚洲区上海站)
- hdu 5584 LCM Walk 2015ACM/ICPC亚洲区上海站-重现赛
- 2015ACM/ICPC亚洲区上海站 LCM Walk
- HDU 5584 LCM Walk(2015-ICPC-上海赛区)
- HDU 5578 Friendship of Frog(暴力)——2015ACM/ICPC亚洲区上海站
- HDU 5583 Kingdom of Black and White(依旧是暴力)——2015ACM/ICPC亚洲区上海站
- HDU 5572 An Easy Physics Problem(计算几何)——2015ACM/ICPC亚洲区上海站-重现赛
- HDOJ5584 Lcm Walk 2015ICPC上海-L
- hdu 5578 Friendship of Frog 2015ACM/ICPC亚洲区上海站-重现赛
- hdu 5583 Kingdom of Black and White 2015ACM/ICPC亚洲区上海站-重现赛
- HDU 5573 Binary Tree 2015ACM/ICPC亚洲区上海站 (构造)
- 【解题报告】2015ACM/ICPC亚洲区上海站
- 2015ACM/ICPC亚洲区上海站【solved:4 / 12】
- HDU-5584-LCM Walk【2015上海赛区】【数论】
- HDU 5578.Friendship of Frog【字符串相同字符最近距离】【2015ACM/ICPC亚洲区上海站】【12月30】
- HDU-5583-Kingdom of Black and White(2015ACM/ICPC亚洲区上海站-重现赛)
- nyoj--1184--为了肾六(动态规划+滚动数组)
- Android之设置横屏、竖屏和全屏显示
- 简单的FTP共享文件pyftpdlib
- CentOs Linux服务器环境搭建记录
- HTML5绘制实心的文本
- HDU 5584 LCM Walk(逆推)——2015ACM/ICPC亚洲区上海站
- Android之设置EditText输入类型(setInputType()方法和android:inputType属性)
- POJ1422——Air Raid(二分图,最小路径覆盖)
- yii插入一条记录后,拿到id值
- hdu(5586)——Sum(最大连续子段和)
- 究竟什么样的公有云最适合开发者,Forrester告诉你真相!
- 【SSH项目实战】国税协同平台-30.投诉受理&保存受理信息
- FPGA服务器硬件搭建涉及的知识点4
- HDU1257 最少拦截系统