HDU 5584 LCM Walk(数学题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5584
题意:(x, y)经过一次操作可以变成(x+z, y)或(x, y+z)现在给你个点(ex, ey)输出有多少种可能的起点,这些起点经过若干次操作能变成(ex, ey)。
思路:我们考虑其中的一次变换,现在为(x, y)(y > x)那么它显然是由(x, y - z)变换来的。其中z = lcm(x, y - z),lcm(x, y - z) = x*(y-z)/gcd(x, y - z)。
这时如果你能发现规律gcd(x, y - z) = gcd(x, y)就可以轻松解决(不过要记得反过来验证下)。
如果没有发现以下规律也可以枚举gcd(x, y - z)的值(笨办法!!!)。
code:
#include <iostream>
using namespace std; int gcd(int x, int y)
{
return !y ? x : gcd(y, x % y);
} int main()
{
int T, cnt = ;
cin >> T;
while (T--) {
int ex, ey;
cin >> ex >> ey;
int ans = ;
while (ex >= && ey >= && ex != ey) {
if (ex < ey) swap(ex, ey);
int d = gcd(ex, ey);
int td = ey/d + ;
if ( == (ex % td) && gcd(ey, ex/td) == d) {
++ans;
ex /= td;
}
else break;
}
cout << "Case #" << ++cnt << ": " << ans << endl;
}
return ;
}
HDU 5584 LCM Walk(数学题)的更多相关文章
- HDU 5584 LCM Walk 数学
LCM Walk Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5584 ...
- HDU 5584 LCM Walk【搜索】
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5584 题意: 分析: 这题比赛的时候卡了很久,一直在用数论的方法解决. 其实从终点往前推就可以发现, ...
- hdu 5584 LCM Walk(数学推导公式,规律)
Problem Description A frog has just learned some number theory, and can't wait to show his ability t ...
- hdu 5584 LCM Walk
没用运用好式子...想想其实很简单,首先应该分析,由于每次加一个LCM是大于等于其中任何一个数的,那么我LCM加在哪个数上面,那个数就是会变成大的,这样想,我们就知道,每个(x,y)对应就一种情况. ...
- 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 ...
- HDU 5844 LCM Walk(数学逆推)
http://acm.hdu.edu.cn/showproblem.php?pid=5584 题意: 现在有坐标(x,y),设它们的最小公倍数为k,接下来可以移动到(x+k,y)或者(x,y+k).现 ...
- L - LCM Walk HDU - 5584 (数论)
题目链接: L - LCM Walk HDU - 5584 题目大意:首先是T组测试样例,然后给你x和y,这个指的是终点.然后问你有多少个起点能走到这个x和y.每一次走的规则是(m1,m2)到(m1+ ...
- HDU5584 LCM Walk 数论
LCM Walk Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- hdu-5584 LCM Walk(数论)
题目链接:LCM Walk Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
随机推荐
- json具体解释
<span style="font-size:12px;">function testJson() { var jsonData = { "firstName ...
- RESTful API学习与实践
参考文献: 1.Learn About ASP.NET Web API 2.深入浅出REST 3.Infoq上“深入探索REST”系列文章 4.RESTful API设计的一点经验 5.Angular ...
- 第10课_dg
export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORACLE ...
- iOS常用的封装方法
做开发也有一段时间了,看了好多大神的代码,总体感觉他们写的代码简洁,好看,然而在对比下我写的代码,混乱,无序,简直不堪入目啊! 总体来说大神们的代码封装的都比较好,对一个项目要重复用到的代码他们都会封 ...
- 用CodeBlocks构建C项目时候出现的问题
后缀名为depend的文件 是makefile 编译产生的文件 是生成一种依赖关系 帮助程序编译的 那为什么有时候会生成而有时候又不会呢? 看你makefile 自己的编写 写了就有 没写就没 ...
- JQuery使用on绑定动态生成元素时碰到的问题
今天在写界面时,希望对一些由JS代码动态添加的html标签进行事件绑定,使用了jquery 1.6+才提供的on函数.我的JQ版本是1.9.2. 以下这段代码是动态生成的. <div class ...
- jquery学习(3)--高级选择器
自己手写的学习笔记.常规选择器: /****************学习--高级选择器(1)****************/---高级选择器:ie7+ 层次选择器: 后代选择器 ul li ...
- codeforces 383C Propagating tree 线段树
http://codeforces.com/problemset/problem/383/C 题目就是说, 给一棵树,将一个节点的值+val, 那么它的子节点都会-val, 子节点的子节点+val. ...
- [LeetCode]题解(python):150-Evaluate Reverse Polish Notation
题目来源: https://leetcode.com/problems/evaluate-reverse-polish-notation/ 题意分析: 给定一个数组,用这个数组来表示加减乘除,例如 [ ...
- win7_32位安装MySQL_5.6以及密码修改方法
1.下载mysql: http://www.xiazaiba.com/html/361.html 2.安装 方便起见,全部默认下一步吧,原理一个样,最后安装到: 3.配置环境变量 我这里添加的是 C ...