• GCD&&LCM


    A - 青蛙的约会

    #include<iostream>
    #include<cmath>
    using namespace std;
    long long ex_gcd(long long a, long long b, long long& x, long long& y) {
      if (b == 0) {
        x = 1;
        y = 0;
        return a;
      }
      long long d = ex_gcd(b, a % b, x, y);
      long long temp = x;
      x = y;
      y = temp - a / b * y;
      return d;
    }
    bool liEu(long long a, long long b, long long c,long long& x, long long& y){
      int d = ex_gcd(a, b, x, y);
      if (c % d != 0) return 0;
      int k = b/d;
      x = x*c/d;
      if(x >= 0)
         x = x%k;
      else
         x = x%k + k;
      return 1;
    }
    int main()
    {
        long long i,x,y,n,m,l;
        cin>>x>>y>>m>>n>>l;
        int c=x-y;
        int a=n-m;
        if(a<0)
        {
            a = -a;
            c = -c;
        }
        if(liEu(a,l,c,x,y)==0)
            cout<<"Impossible
    ";
        else
            cout<<x;
        return 0;
    }

     B - Least Common Multiple

    ac的猝不及防,C++报错:

    0_0_33373803_13403.cpp
    0_0_33373803_13403.cpp(10) : error C3861: “__gcd”:  找不到标识符

    因为__gcd()是GNU里面的函数,而不是是标准库内的函数,所以编译器选用G++

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    long long Function(vector<long long> num)
    {
        long long gcd=0,res=num[0];
        for(long long i=1;i<num.size();++i)
        {
            gcd=__gcd(num[i],res);
            res=res*num[i]/gcd;
        }
        return res;
    }
    int main()
    {
        long long n,m,t;
        cin>>n;
        for(long long i=0;i<n;++i)
        {
            cin>>m;
            vector<long long> num;
            for(long long j=0;j<m;++j)
            {
                cin>>t;
                num.push_back(t);
            }
            cout<<Function(num)<<endl;
            num.clear();
        }
        return 0;
    }

     C - A/B

    最后一步是防止负数

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    int ex_gcd(int a, int b, int& x, int& y) {
      if (b == 0) {
        x = 1;
        y = 0;
        return a;
      }
      int d = ex_gcd(b, a % b, x, y);
      int temp = x;
      x = y;
      y = temp - a / b * y;
      return d;
    }
    int main()
    {
        int n,b,t,x,y;
        cin>>t;
        for(int i=0;i<t;++i)
        {
            cin>>n>>b;
            ex_gcd(b,9973,x,y);
            cout<<(x*n%9973+9973)%9973<<endl;
        }
        return 0;
    }

     D - 又见GCD

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int t,a,b,c;
        cin>>t;
        for(int i=0;i<t;++i)
        {
            cin>>a>>b;
            c=b+1;
            while(1)
            {
                if(__gcd(a,c)==b)
                {
                    cout<<c<<endl;
                    break;
                }
                else
                {
                    c++;
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    修复TabControl在Binding情况下Canvas被复用的问题
    避免缓加载时因违反惯例导致的空引用!
    乱说一气
    WPF中的数据验证
    [zz]GPU architecture
    [zz]DirectX 11 and Shared Model 5.0
    网页栅格系统中的最佳宽度:960px
    复习html标签及其属性
    去除链接虚线边框css
    使用jquery解决IE6不兼容的伪类
  • 原文地址:https://www.cnblogs.com/chrysanthemum/p/13205470.html
Copyright © 2020-2023  润新知