2 条题解

  • 0
    @ 2025-7-2 20:10:13
    #include<cstdio>
    using namespace std;
    int gcd(int a,int b) {
        return b==0?a:gcd(b,a%b);
    }
    int main() {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            int a0,a1,b0,b1;
            scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
            int p=a0/a1,q=b1/b0,ans=0;
            for(int x=1;x*x<=b1;x++) 
                if(b1%x==0){
                    if(x%a1==0&&gcd(x/a1,p)==1&&gcd(q,b1/x)==1) ans++;
                    int y=b1/x;
                    if(x==y) continue; 
                    if(y%a1==0&&gcd(y/a1,p)==1&&gcd(q,b1/y)==1) ans++;
                }
            printf("%d\n",ans);
        }
        return 0;
    }
    

    不要问我为什么和楼下的那么像,这是因为我是洛谷题解改版,而他/她是照抄(包真的,不信自己去洛谷看)

    • -1
      @ 2025-7-2 11:08:03
      #include<cstdio>
      using namespace std;
      int gcd(int a,int b) {
          return b==0?a:gcd(b,a%b);
      }
      int main() {
          int T;
          scanf("%d",&T);
          while(T--) {
              int a0,a1,b0,b1;
              scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
              int p=a0/a1,q=b1/b0,ans=0;
              for(int x=1;x*x<=b1;x++) 
                  if(b1%x==0){
                      if(x%a1==0&&gcd(x/a1,p)==1&&gcd(q,b1/x)==1) ans++;
                      int y=b1/x;
                      if(x==y) continue; 
                      if(y%a1==0&&gcd(y/a1,p)==1&&gcd(q,b1/y)==1) ans++;
                  }
              printf("%d\n",ans);
          }
          return 0;
      }
      
      • 1

      信息

      ID
      315
      时间
      1000ms
      内存
      256MiB
      难度
      8
      标签
      (无)
      递交数
      244
      已通过
      38
      上传者