社区讨论
WA10 求调
P9750[CSP-J 2023] 一元二次方程参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhizv83r
- 此快照首次捕获于
- 2025/11/03 18:25 4 个月前
- 此快照最后确认于
- 2025/11/03 18:25 4 个月前
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,m;
int gcd(int a,int b){
if(b==0)return a;
return gcd(b,a%b);
}
signed main(){
cin>>t>>m;
while(t--){
int a,b,c;
cin>>a>>b>>c;
int d=b*b-4*a*c;
if(d<0)cout<<"NO";
else{
int fmz=2*a,fmg=2*a,fzz=-b,fzg=1;
for(int i=2;i*i<=d;i++)if(d%(i*i)==0)fzg=i;
d/=fzg*fzg;
int g1=gcd(fmz,fzz),g2=gcd(fmg,fzg);
fmz/=g1;
fzz/=g1;
fmg/=g2;
fzg/=g2;
if(fmz<0){
fmz=abs(fmz);
fzz=-fzz;
}
if(fmg<0){
fmg=abs(fmg);
fzg=-fzg;
}
if(d==0){
if(fmz==1)cout<<fzz;
else{
if(fzz==0)cout<<0;
else cout<<fzz<<"/"<<fmz;
}
}
else if(d==1){
int fm=fmg*fmz,fz=fzg*fmz+fzz*fmg;
int g=gcd(fm,fz);
fm/=g;
fz/=g;
if(fm<0){
fm=abs(fm);
fz=-fz;
}
if(fm==1)cout<<fz;
else{
if(fz==0)cout<<0;
else cout<<fz<<"/"<<fm;
}
}
else{
if(fmz==1&&fzz!=0)cout<<fzz<<"+";
else if(fzz!=0)cout<<fzz<<"/"<<fmz<<"+";
if(fzg==1)cout<<"sqrt("<<d<<")";
else cout<<fzg<<"*sqrt("<<d<<")";
if(fmg!=1)cout<<"/"<<fmg;
}
}
cout<<'\n';
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...