社区讨论
求估分和算时间复杂度
P8255[NOI Online 2022 入门组] 数学游戏参与者 3已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @lo94ktor
- 此快照首次捕获于
- 2023/10/28 05:28 2 年前
- 此快照最后确认于
- 2023/10/28 05:28 2 年前
RT
也许是
代码如下:
C也许是
代码如下:
#include<bits/stdc++.h>
using namespace std;
unsigned long long gcd(unsigned long long a,unsigned long long b){
unsigned long long r;
while(b>0){
r = a%b;
a = b;
b = r;
}
return a;
}
bool check(unsigned long long x,unsigned long long y,unsigned long z){
if(gcd(x,y)*y==z) return true;
else return false;
}
int main(){
freopen("math3.in","r",stdin);
freopen("math.out","w",stdout);
int t;
scanf("%d",&t);
while(t--){
vector<unsigned long long> vec;
unsigned long long a,z;
scanf("%llu %llu",&a,&z);
z/=a;
for(unsigned long long i(1);i<=sqrt(z);++i){
if(z%i==0){
vec.push_back(i);
if(i*i != z) vec.push_back(z/i);
}
}
unsigned long long mn = 18446744073709551615ULL;
bool fl = false;
for(auto x:vec){
if(x>mn) continue;
if(check(a,x,z)){
mn = mn > x ? x : mn;
fl = true;
}
}
if(fl) printf("%llu\n",mn);
else printf("%d\n",-1);
}
return 0;
}
回复
共 7 条回复,欢迎继续交流。
正在加载回复...