2015ACM/ICPC亚洲区上海站LCM WALK

题意:定义了一种走法,就是从当前的点为sx,sy,可以走到ex,ey;并且ex = sx + z,或者 ey = sy + z,

其中z为lcm(sx,sy);

如果是顺着给你sx,sy,那很好得到之后的两个可能走到的点,但是题目并没有这么给出;而是给了终点;

这就需要从可约及前后变化形式的角度来逆推回去了;

一般的数论都需要用到__gcd();z ,sx,sy,ex,ey中都是含有gcd()的,并且如果将__gcd()除去,得到的(ex/gcd,ey/gcd) = 1;

还有一点可以从顺推得到的就是:

(x,y)=> (x + x*y/gcd,y)||(x,y+x*y/gcd)将后面的式子提前gcd得到(x`+x`*y`,y) 即((y`+1)*x`,y`) 原式可看出是(x`,y`)

即都是在模除的意义下讨论的,大的一项的由来就是从顺推得到的,这样只需判断是否能整除就可以判短是否继续往小的递减,

开始想构造出符合欧几里得一样的mod辗转,但是要因题而异;

code:

<span style="font-size:18px;">#include<bits/stdc++.h>
using namespace std;
int cnt;
int solve(int x,int y)
{
cnt++;
if(x < y) swap(x,y);
if(x%(y+1)||x == y) return cnt;
solve(x/(y+1),y);
}
int main()
{
int x,y,T,kase = 1;
cin>>T;
while(T--){
cnt = 0;
scanf("%d%d",&x,&y);
int gcd = __gcd(x,y); //库中已有的函数,<span style="color:#FF0000;">注意poj中要手写__gcd()</span>
x /= gcd;
y /= gcd;
printf("Case #%d: %d\n",kase++,solve(x,y));
}
}</span>

hdu5548的更多相关文章

随机推荐

  1. MVC中使用QrCodeNet 生成二维码

    QrCodeNet下载地址:http://qrcodenet.codeplex.com/ using System.Drawing; using System.Drawing.Imaging; usi ...

  2. MySQL创建/删除/清空表,添加/删除字段

    创建表: create table tablename (column_name column_type); create table table_name( id int not null auto ...

  3. 使用urllib进行网页爬取

    # coding=gbk # 抓取开奖号码 # url:http://datachart.500.com/dlt/zoushi/jbzs_foreback.shtml ''' 对网页逐行迭代,找到目标 ...

  4. ES 中的那些坑

    数组 1. 数组中的 full-text 字段将被 [analyzed] 2. 数组中[所有元素]的数据类型必须一致 3. 数组的数据类型,以其 [第一个元素]为准 映射 1. 数据类型会自动进行转化 ...

  5. posix thread API列表

    互斥量: pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;int pthread_mutex_init(pthread_mutex_t *mutex ...

  6. java基础常识

    现在总结一些经常接触到的java名词 一:java技术分类 javase:java standard editor:java标准版,主要定义java经常使用的API(Application Progr ...

  7. 【二分答案+贪心】解决“最小值最大”问题(UVa 12124 - Assemble)

    Problem A - Assemble Time limit: 2 seconds Recently your team noticed that the computer you use to p ...

  8. saltstack实战2--远程执行之返回(returner)

    saltstack有3大功能:远程执行,配置管理,云管理 其中远程执行又可分解为:目标,模块,返回  这3个部分. 比如下面语句 [root@master ~]# salt '*' test.ping ...

  9. JS获取网页宽高方法集合

    JS获取网页宽高等方法的集合:document.body.clientWidth - 网页可见区域宽document.body.clientHeight - 网页可见区域高 document.body ...

  10. Java 简单算法--排序

    1. 冒泡排序 package cn.magicdu.algorithm; public class BubbleSort { public static void main(String[] arg ...