逻辑最清晰的一集
2025-08-27 11:13:24
发布于:北京
15阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int p,q;
int kaifang(int x){
int w=1;
for(int i=1;i<=sqrt(x);i++){
if(x%(i*i)==0) w=i;
}
return w;
}
void chuli(int &p,int &q){
if(q<0){
p=-p;
q=-q;
}
if(p>0){
int w=__gcd(p,q);
p/=w;
q/=w;
}
else{
p=-p;
int w=__gcd(p,q);
p/=w;
q/=w;
p=-p;
}
}
int main(){
freopen("uqe.in","r",stdin);
freopen("uqe.out","w",stdout);
int t,m;
cin>>t>>m;
while(t--){
int a,b,c;
cin>>a>>b>>c;
int delta=b*b-4*a*c;
if(delta<0) cout<<"NO";
else if(delta==0){
p=-b,q=2*a;
if(p==0) cout<<0;
else chuli(p,q);
if(p!=0){
if(q==1) cout<<p;
else cout<<p<<"/"<<q;
}
}
else{
int ju=kaifang(delta);
if(ju*ju==delta){
q=2*a;
if(q<0){p=-ju-b;}
else p=ju-b;
if(p==0) cout<<0;
else chuli(p,q);
if(p!=0){
if(q==1) cout<<p;
else cout<<p<<"/"<<q;
}
}
else{
q=2*a,p=-b;
int q2=2*a,cmm=delta/ju/ju;
if(q<0) ju=-ju;
chuli(p,q);
if(p!=0){
if(q==1) cout<<p;
else cout<<p<<"/"<<q;
cout<<"+";
}
chuli(ju,q2);
if(ju!=1) cout<<ju<<"*";
if(q2==1) cout<<"sqrt("<<cmm<<")";
else cout<<"sqrt("<<cmm<<")/"<<q2;
}
}
cout<<endl;
}
fclose(stdin);
fclose(stdout);
return 0;
}
全部评论 2
改版*2
1周前 来自 北京
1优化了
1周前 来自 辽宁
1
有帮助,赞一个