• hdu 5584 LCM Walk


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

      第二个突破口是,那个式子,我们可以想一想,是不是可以把数进行拆分,我们发现

         a=x*k,b=y*k;其中k=gcd(a,b) 并且 x和y互质,这样带入式子,这样我们就把(x*k,y*k)推到了(x*k,x*y+x*y*k),化简即k *(x,(x+1)*y),gcd仍然是k,反过来,我们只需要保证,前一步,大的值满足(b>a)  b%(a+1)==0 并且 gcd(a,b)=K。不断迭代过程即可 

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    #include<stdio.h>
    using namespace std;
    int cnt;
    int gcd(int x,int y){
      return x%y==0?y:gcd(y,x%y);
    }
    void solve(int x,int y){
      if (x>y){
        swap(x,y);
      }
      if (y%(x+1)){
        return ;
      }else {
        cnt++;
        solve(x,y/(x+1));
      }
    
    }
    int main(){
      int t;
      int ex,ey;
      scanf("%d",&t);
      int z=0;
      while(t--){
        z++;
        cnt=1;
        scanf("%d%d",&ex,&ey);
        int x=max(ex,ey);
        int y=min(ex,ey);
        int k=gcd(ex,ey);
        x/=k;y/=k;
        solve(x,y);
        printf("Case #%d: %d
    ",z,cnt);
      }
      return 0;
    }
    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    【翻译】让你的网站飞起来
    理解ASP.NET MVC中的模型绑定
    【转载】创建定制ASP.NET MVC视图引擎
    修改STM32主频
    Cortex系列ARM核心及体系结构介绍
    递归
    NFD模拟兴趣包的转发
    NX 笔记
    MicroPython 8266 配置
    Python JSON操作
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9823329.html
Copyright © 2020-2023  润新知