#include <bits/stdc++.h>
using namespace std;
#define int long long
int pan(double c){
int k=c;
return k==c;
}
signed main() {
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--){
int a;
int b,c;
cin>>a>>b>>c;
if((b*c)%a==0){
cout<<(b*c)/a<<'\n';
}else{
cout<<-1<<'\n';
}
}
}
// 64 位输出请用 printf("%lld")
其实这个题,就是一个均值不等式,在高中的时候,我们学过a^2+b^2>=2*a*b,当且仅当a=b时等号成立,而这个题,有一个要注意的地方,就是a^2*d^2=b^2*c^2,这时候我们需要化简一下这个式子,直接算是爆范围的,就是对两端开平方,因为a,b,c,d都是正整数,开平方取正,所以这个题就变成了a*d=b*c;正如我代码上方写的pan那个函数,一开始我想着使用那种方法判断,但事实是错了的,后来我想了一下因为浮点数的精度问题,确实并不如直接判断取模是否为0这个方法高效,因为这时候超越了精度
但是想告诉大家一个冷知识,double所能储存的数是很大的哦,如果这个题取模两数相乘是爆范围的,可以试试我题目写的pan函数,而且非常要注意的是先除后乘,因为他有可能整除不了,ok啦祝你ac!

京公网安备 11010502036488号