【HDU 5584】 LCM Walk(逆推)——2015ACM/ICPC亚洲区上海站
来源:互联网 发布:手机淘宝有什么活动 编辑:程序博客网 时间:2024/05/16 15:44
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亚洲区上海站-重现赛)
- json get请求 img src 带 中文 解决
- 转载自大牛的博文-解决大批量插入数据到数据库中的问题
- 内容提供器(Content Provider)--跨程序共享数据
- 位运算——用位存储40亿个40亿以内的整数
- 网络编程---Socket编程
- 【HDU 5584】 LCM Walk(逆推)——2015ACM/ICPC亚洲区上海站
- 学习java的个人经验!
- SQL查询相关技术-6.SQL操作(自选设置条件)
- 【数据结构和算法05】 红-黑树(看完包懂~)
- 面试题5-从尾到头打印链表
- 用Xcode自带的svn搭建本地SVN服务器
- ListView中的CheckBox全选反选
- 链表实现
- eclipse运行报Setting property 'source' to 'org.eclipse.jst.jee.server:project' did not find a matching