input

T  1<=T<=1000

x y

output

有多少个起点可以走n(n>=0)步走到(x,y),只能从(x,y)走到(x,y+lcm(x,y))/(x+lcm(x,y),y)

标准解:从(x,y0)走到(x,y),则设x=ag,y0=bg,g=gcd(x,y0),有y=bg+abg=(a+1)bg,因为a,b互质,a,(a+1)互质,所以a和(a+1)b互质,所以若可以从(x,y0)走到(x,y),有gcd(x,y0)=gcd(x,y),然后将x和y中gcd(x,y)除去之后不断除以(x+1)即可

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <set>
 4 #include <algorithm>
 5
 6 using namespace std;
 7
 8 typedef long long LL;
 9
10 //求最大公约数
11 LL gcd(LL a, LL b) { if(!b) return a; else return gcd(b,a%b); }
12
13 int main()
14 {
15     int t,Case = 0;
16     scanf("%d",&t);
17     while(t--)
18     {
19         LL ex,ey; //终点坐标
20
21         scanf("%lld%lld",&ex,&ey);
22         LL GCD = gcd(ex,ey);
23         ex/=GCD,ey /=GCD;
24         int ans = 0;
25         while(1)
26         {
27             if(ey < ex) swap(ex,ey);
28             ans++;
29             if(ey % (ex+1)) break;
30             ey /= (ex+1);
31         }
32
33         printf("Case #%d: %d\n",++Case,ans);
34     }
35 }

answer

 1 #include <cstdio>
 2 #include <queue>
 3 #include <cstring>
 4 #include <iostream>
 5 #include <cstdlib>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <map>
 9 #include <set>
10 #include <ctime>
11 #include <cmath>
12 #include <cctype>
13 #define MAX 100000
14 #define LL long long
15 int cas=1,T,x,y,d[1000],dn;
16 void find(int x,int *d,int& dn)
17 {
18     dn=-1;
19     int m=sqrt(x);
20     for(int i=1;i<=m;i++) if(x%i==0) d[++dn]=i;
21     for(int i=dn;i>=0;i--) d[++dn]=x/d[i];
22 }
23 int gcd(int a,int b) { return b==0?a:gcd(b,a%b); }
24 int main()
25 {
26 //    freopen("in","r",stdin);
27     scanf("%d",&T);
28     while(T--)
29     {
30         scanf("%d%d",&x,&y);
31         int step=1,flag=1;
32         while(flag&&x!=y)
33         {
34             flag=0;
35             if(x>y) std::swap(x,y);
36             int g=gcd(x,y);
37             find(g,d,dn);
38             for(int i=dn;i>=0;i--)
39             {
40                 if(y%(d[i]+x)==0)
41                 {
42                     int y1=y/(d[i]+x)*d[i];
43                     if(gcd(x,y1)==d[i]) { y=y1;step++;flag=1;break; }
44                 }
45             }
46         }
47         printf("Case #%d: %d\n",cas++,step);
48     }
49     //printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);
50     return 0;
51 } 

My Code

转载于:https://www.cnblogs.com/cdyboke/p/5051192.html

hdu 5584 gcd/lcm/数学公式相关推荐

  1. HDU - 4497 GCD and LCM

    题意:给出三个数的gcd,lcm,求这三个数的全部的可能 思路 :设x,y,z的gcd为d,那么设x=d*a,y=d*b,z=d*c.a,b.c肯定是互质的.那么lcm=d*a*b*c,所以我们能够得 ...

  2. hdu-3071 Gcd Lcm game---质因数分解+状态压缩+线段树

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3071 题目大意: 给定一个长度为n的序列m次操作,操作的种类一共有三种 查询 L :查询一个区间的所 ...

  3. UVa 11388 - GCD LCM

    题目大意:给出两个数的最大公约数G和最小公倍数L,求出这两个数. 根据a*b = GCD * LCM,然后枚举判断就好了. 1 #include <cstdio> 2 typedef un ...

  4. GCD and LCM Aizu - 0005(辗转相除)+GCD LCM Inverse POJ - 2429(java或【Miller Rabin素数測试】+【Pollar Rho整数分解】)

    题目:GCD and LCM Aizu - 0005 Write a program which computes the greatest common divisor (GCD) and the ...

  5. POJ 2429 GCD LCM Inverse

    设答案为ans1,ans2 ans1=a1*gcd,ans2=a2*gcd,a1,a2互质 gcd*a1*b1=lcm,gcd*a2*b2=lcm a1*b1=lcm=(ans1*ans2)/gcd= ...

  6. POJ2429 GCDLCM Inverse(整数分解,由GCD+LCM求a,b)

    POJ2429 GCD&LCM Inverse(整数分解,由GCD+LCM求a,b) 分类: 数论 2013-02-12 22:00  180人阅读  评论(1)  收藏  举报 题目:GCD ...

  7. HDU - 相遇周期(gcd,lcm)

    HDU - 相遇周期 而卫星是进行这些探测的重要工具,我们的问题是已知两颗卫星的运行周期,求它们的相遇周期. Input 输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. ...

  8. HDU - 4497 GCD and LCM 数论gcd

    传送门 文章目录 题意: 思路: 题意: 给三个数的lcmlcmlcm和gcdgcdgcd,求满足条件的三元组组合个数. 思路: 首先lcmmodgcd==0lcm\bmod gcd==0lcmmod ...

  9. hdu 4497 GCD and LCM

    题目意思: 给你三个数的最大公约数G,最小公倍数L,求这样的三位数有多少个. 解: 1   首先如果 L%G!=0  那很明显无解  输出0 2  如果L%G==0  然后 令L=L/G  ,G=1 ...

最新文章

  1. Navicat for Oracle工具连接oracle
  2. Unity iPhone Touch Animation Tutorial,untiy3d iphone简单动画开发教程
  3. Xamarin XAML语言教程隐藏文件使用Progress属性设置进度条
  4. python编程100例头条-我用Python编程语言做了一些神奇好玩的事情
  5. 【arduino】DIY音乐播放器,arduino播放wav音乐,TRMpcm库测试及使用
  6. linux 上传工具 lr,Linux传输工具lrzsz
  7. 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)
  8. S/4HANA extension field search的SQL语句是在什么地方生成的
  9. python菜鸟100例精选
  10. Hashtable的测试
  11. linux系统下的权限知识梳理
  12. python车牌识别系统开源代码_python实现车牌识别的示例代码
  13. 【转】兄弟俩玩的2000亿美元的公司,盖茨与鲍尔默:微软双雄上演终极接力
  14. [附源码]java毕业设计宾馆客房管理系统
  15. 晓前端·周刊【第6期】:量子霸权
  16. 开源软电话 (Open Source Soft Phones)
  17. websocket 给服务端发送太长数据处理(The decoded text message was too big for the output buffer and the endpoint )
  18. mysql未开启binlog恢复数据_MYSQL bin_log 开启及数据恢复
  19. 机器学习Python相关套件(np, plt, pd)
  20. (SIP-1-话机注册)关于IP话机通过SIP协议注册到PBX电话交换机的全过程解析-如何看wireshark中的报文

热门文章

  1. 单曲循环 翻译_“单曲循环”用英语怎么说?
  2. java 自定义结构_java自定义构造二叉树及其遍历
  3. vue 数组转集合_思想实验:如何在Vue中使localStorage具有响应式?
  4. 关于el-form中的rules未生效问题的解决方法
  5. python中pep8规范_Python PEP8规范
  6. mysql分组查询学生平均年龄_mysql练习题
  7. u盘解密软件_【精彩文章】基于STM32的指纹识别U盘设计
  8. 一般纳米材料是指尺度为_纳米是什么米?什么是纳米材料?(1)
  9. 中大计算机考研爆冷,中山大学计算机“爆冷”,321分排名第二,网友:“锦鲤”附体!...
  10. dhcp 服务器发出了 dhcpnack 消息,跪求DHCP报文分析