zoukankan      html  css  js  c++  java
  • 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(添加时记得备注)
  • 相关阅读:
    S32K142学习记录_day1
    dsPIC33EP单片机的PPS(外设引脚选择)
    零欧电阻
    MOS管的栅极和源极之间的电阻
    RDLC表格排序设置
    SQL相关
    使用sql的xmlpath可以把xml文件转化为表格
    Visual Studio2017 无法折叠
    使用图形化界面打包自己的类库
    初识NuGet及快速安装使用
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9823329.html
Copyright © 2011-2022 走看看