• Hankson的趣味题 未完待续


    gcd(x,a0)=a1  lcm(x,b0)=b1   枚举x

                          (x*b0)/gcd(x,b0)=b1  ->  x=(b1/b0)*gcd(x,b0)  枚举gcd(x,b0),gcd(x,b0)是b0的一个约数  ->  枚举b0的约数

                                                                                                                                                                             注意b0是完全平方数时要特判

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    int x,ans,a0,a1,b0,b1;
    int gcd(int a,int b){
        if(b==0) return a;
        return gcd(b,a%b);
    }
    int main(){
        int n;cin>>n;
        while(n--){
            ans=0;
            cin>>a0>>a1>>b0>>b1;
            if(b1%b0!=0){
                cout<<0<<endl;
                continue;
            }
            for(int i=1;i<sqrt(b0);i++){
                if(b0%i==0){
                    x=b1/b0*i;
                    if(gcd(x,b0)==i&&gcd(x,a0)==a1) ans++;
                    x=b1/b0*(b0/i);
                    if(gcd(x,b0)==b0/i&&gcd(x,a0)==a1) ans++;
                }
            }
            int k=sqrt(b0);//如果放到上面去,相同的一个数会多加一次 
            if(k*k==b0&&b0%k==0){
                x=b1/b0*k;
                if(gcd(x,b0)==k&&gcd(x,a0)==a1) ans++;
            }
            cout<<ans<<endl;
        }
        return 0
  • 相关阅读:
    css换行
    VC include 路径解析 冷夜
    DirectxDraw学习笔记 冷夜
    winmain窗口代码 冷夜
    DirectDraw 常用功能代码记录 冷夜
    C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free 冷夜
    BMP文件结构 冷夜
    管道流
    打印流
    字符编码
  • 原文地址:https://www.cnblogs.com/lcan/p/9465266.html
Copyright © 2020-2023  润新知