🐾或许会很慢,但是不可以停下来🐾
题目
题解
纯暴力
巧妙之处是消除变量,把4个变量降低到了2个变量
a=a1 * a2
b=a1 * b2+a2 * b1
c=b1 * b2
可以得出 a1=a/a2 b1=c/b2 然后带入到b中即可
注意特判,如果是除数是0,就用continue
#include<bits/stdc++.h>
using namespace std;
void sol(){
int a,b,c;
cin>>a>>b>>c;
int flag=1;
for(int i=-1e3;i<=1e3;i++){
if(i==0){
continue;
}
if(a%i==0){
for(int j=-1e3;j<=1e3;j++){
if(j==0){
continue;
}
if(c%j==0){
if(b==a*j/i+c*i/j){
flag=0;
cout<<a/i<<' '<<c/j<<" "<<i<<" "<<j<<endl;
return;
}
}
}
}
}
if(flag==1){
puts("NO");
}
}
int main(){
int t;
cin>>t;
while(t--)
sol();
return 0;
}
总结
当时做的时候还以为什么高级算法
原来是纯暴力
将用到的公式进行展开,在纸上写一写,思路就出来了
想不出来,就纯暴力,再优化