题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5584

题意:

分析:

这题比赛的时候卡了很久,一直在用数论的方法解决。

其实从终点往前推就可以发现,整个过程中的点的gcd都是一样的,利用这个性质倒着搜索一遍就好了。

相同的gcd均为gcd(6,10)

以(6,10)为例,假设倒数第二个点到达(6−x∗gcd,10),那么x=(6−x∗gcd)∗10/gcd,设6=k1∗gcd, 10=k2∗gcd,那么x满足x=k1∗k2/(k2+1),每次只要判断k2+1是否能被k1整除就可以了。

代码:

#include<iostream>
using namespace std;
int gcd(int a, int b){ return b?gcd(b, a % b):a;}
int cnt = 0;
int g;
int c = 1;
void dfs(int a, int b)
{
if(a < 1 || b < 1) return ;
cnt++;
if(a % (b + 1) == 0) dfs(a / (b + 1), b);
if(b % (a + 1) == 0) dfs(a, b/(a + 1));
}
int main (void)
{
int T;cin>>T;
while(T--){
int x, y;
cin>>x>>y;
g = gcd(x, y);
x /= g;
y /= g;
cnt = 0;
dfs(x, y);
cout<<"Case #"<<c<<": "<<cnt<<endl;
c++;
}
return 0;
}

HDU 5584 LCM Walk【搜索】的更多相关文章

  1. HDU 5584 LCM Walk 数学

    LCM Walk Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5584 ...

  2. HDU 5584 LCM Walk(数学题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5584 题意:(x, y)经过一次操作可以变成(x+z, y)或(x, y+z)现在给你个点(ex, e ...

  3. hdu 5584 LCM Walk(数学推导公式,规律)

    Problem Description A frog has just learned some number theory, and can't wait to show his ability t ...

  4. hdu 5584 LCM Walk

    没用运用好式子...想想其实很简单,首先应该分析,由于每次加一个LCM是大于等于其中任何一个数的,那么我LCM加在哪个数上面,那个数就是会变成大的,这样想,我们就知道,每个(x,y)对应就一种情况. ...

  5. HDU - 5584 LCM Walk (数论 GCD)

    A frog has just learned some number theory, and can't wait to show his ability to his girlfriend. No ...

  6. HDU 5844 LCM Walk(数学逆推)

    http://acm.hdu.edu.cn/showproblem.php?pid=5584 题意: 现在有坐标(x,y),设它们的最小公倍数为k,接下来可以移动到(x+k,y)或者(x,y+k).现 ...

  7. L - LCM Walk HDU - 5584 (数论)

    题目链接: L - LCM Walk HDU - 5584 题目大意:首先是T组测试样例,然后给你x和y,这个指的是终点.然后问你有多少个起点能走到这个x和y.每一次走的规则是(m1,m2)到(m1+ ...

  8. HDU5584 LCM Walk 数论

    LCM Walk Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  9. hdu-5584 LCM Walk(数论)

    题目链接:LCM Walk Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others)To ...

随机推荐

  1. Java数据结构和算法(六)--二叉树

    什么是树? 上面图例就是一个树,用圆代表节点,连接圆的直线代表边.树的顶端总有一个节点,通过它连接第二层的节点,然后第二层连向更下一层的节点,以此递推 ,所以树的顶端小,底部大.和现实中的树是相反的, ...

  2. 微服务开源生态报告 No.10

    「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...

  3. Django项目:CRM(客户关系管理系统)--42--34PerfectCRM实现CRM自定义用户

    #models.py # ————————01PerfectCRM基本配置ADMIN———————— from django.db import models # Create your models ...

  4. Hackerrank--XOR love (Math系列)

    题目链接 Devendra loves the XOR operation very much which is denoted by ∧ sign in most of the programmin ...

  5. Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---装饰模式之StarBuzzCoffee[转]

     1  2{<HeadFirst设计模式>之装饰模式 }  3{ 本单元中的类为被装饰者         }  4{ 编译工具: Delphi7.0          }  5{ E-Ma ...

  6. C#5.0 异步编程async/await用法

    微软在发布VS2012的同时推出了C#5.0,其中包含了async和await 代码如下: class Program { private static readonly Stopwatch watc ...

  7. 2018-8-10-win10-uwp-禁止编译器优化代码

    title author date CreateTime categories win10 uwp 禁止编译器优化代码 lindexi 2018-08-10 19:16:50 +0800 2018-2 ...

  8. python 数据标准化

  9. 当spark遇见hbase

    一.使用sbt引入hbase依赖包 "org.apache.hbase" % "hbase-server" % "2.1.0", " ...

  10. LintCode_372 在O(1)时间复杂度删除链表节点

    题目 给定一个单链表中的表头和一个等待被删除的节点(非表头或表尾).请在在O(1)时间复杂度删除该链表节点.并在删除该节点后,返回表头. 思路 因为O(1)内删除所以 不能从头节点去遍历找他的前驱节点 ...