帮忙估个分贝
查看原帖
帮忙估个分贝
519573
Daniel_yao楼主2022/3/26 21:43
#include<bits/stdc++.h>
using namespace std;
int t;
long long x, z;

inline long long read(){
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*f;
}

long long gcd(long long a, long long b){
  if(a == 0){
    return b;
  }
  if(b == 0){
    return a;
  }
  if(!(a & 1) && !(b & 1)){
    return gcd(a >> 1, b >> 1) << 1;
  }
  else if(!(b & 1)){
    return gcd(a, b >> 1);
  }
  else if(!(a & 1)){
    return gcd(a >> 1, b);
  }
  else{
    return gcd(abs(a - b), min(a, b));
  }
}

int main(){
  freopen("math.in", "r", stdin);
  freopen("math.out", "w", stdout);
  t = read();
  while(t--){
    x = read();
    z = read();
    long long num = z / x, y = 0;
    bool f = 0;
    for(long long i = 1;i <= num;i++){
      if(num % i == 0){
        y = num / i;
        if(i == gcd(x, y)){
          cout << y << endl;
          f = 1;
          break;
        }
      }
    }
    if(!f){
      cout << -1 << endl;
    }
  }
  return 0;
}

2022/3/26 21:43
加载中...