这题只能拿90分,后来我看数据很接近,纯粹是打表打出来,但自己又忘了。两个月后天力同学咨询这个问题,完全忘了这题是怎么做的,代码都想不起来。幸好娃还有点印象,现在赶紧记录一下,免得又忘了。代码如下:
#include<iostream>
#include<cmath>
using namespace std;
struct two{
int n;
int m;
};
int finder(int x,int y){
int a=1;
if ((y-a)==0) return -1;
if (x%a==0&&x%(y-a)==0) return a;
a++;
while (a<=y/2&&a<=x&&x/(y-a)>=2)
{
if (x%a==0&&x%(y-a)==0) return a;
a++;
}
return -1;
}
int main(){
int k;
cin>>k;
two a[10000];
for (int i=0;i<k;i++){
cin>>a[i].n>>a[i].m;
}
for (int i=0;i<k;i++){
cout<<finder(a[i].n,a[i].m)<<endl;
}
return 0;
}