社区讨论
求调!!!马风良好,可互关!!!
P9750[CSP-J 2023] 一元二次方程参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mhj3sukz
- 此快照首次捕获于
- 2025/11/03 20:15 4 个月前
- 此快照最后确认于
- 2025/11/03 20:15 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,c,delta;
int ti(int x) {
if(x==0) return 0;
int f=sqrt(x);
if(f*f==x) return f;
int ma=1;
for(int i=2; i*i<=x; i++)
if(x%(i*i)==0) ma=i;
return ma;
}
signed main() {
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++) {
scanf("%d%d%d",&a,&b,&c);
delta=b*b-4*a*c;
if(delta<0) printf("NO\n");
else {
int x=__gcd(-b,2*a);
int a1=2*a,b1=b*(-1);
a1/=x;
b1/=x;
if(a1<0) a1*=-1,b1*=-1;
int d=ti(delta);
if(d==0) {
if(b1==0) printf("0\n");
else if(a1==1) printf("%d\n",b1);
else printf("%d/%d\n",b1,a1);
continue;
}
delta/=d*d;
if(delta==1) {
int a2=a*2;
int x1=__gcd(a2,d);
a2/=x1,d/=x1;
if(a2<0) a2*=-1,d*=-1;
if(a2==1){
if(b1==0) printf("%d\n",d);
else if(a1==1) printf("%d\n",d+b1);
else printf("%d/%d+%d\n",b1,a1,d);
}
else{
int t=__gcd(a1,a2),h=a1*a2/t;
b1*=h/a1,d*=h/a2;
int h1=__gcd(b1+d,h);
h/=h1;
int ans=b1+d;
ans/=h1;
if(h<0) h*=-1,ans*=-1;
if(h==1) printf("%d\n",ans);
else printf("%d/%d\n",ans,h);
}
} else {
int a2=a*2;
int x1=__gcd(a2,d);
a2/=x1,d/=x1;
if(a2<0) a2*=-1,d*=-1;
if(a2==1){
if(a1==1){
if(d==1) b1!=0?printf("%d+sqrt(%d)\n",b1,delta):printf("sqrt(%d)\n",delta);
else b1!=0?printf("%d+%d*sqrt(%d)\n",b1,d,delta):printf("%d*sqrt(%d)\n",d,delta);
}
else{
if(d==1) b1!=0?printf("%d/%d+sqrt(%d)\n",b1,a1,delta):printf("sqrt(%d)\n",delta);
else b1!=0?printf("%d/%d+%d*sqrt(%d)\n",b1,a1,d,delta):printf("%d*sqrt(%d)\n",d,delta);
}
}
else{
if(a1==1){
if(d==1) b1!=0?printf("%d+sqrt(%d)/%d\n",b1,delta,a2):printf("sqrt(%d)/%d\n",delta,a2);
else b1!=0?printf("%d+%d*sqrt(%d)/%d\n",b1,d,delta,a2):printf("%d*sqrt(%d)/%d\n",d,delta,a2);
}
else{
if(d==1) b1!=0?printf("%d/%d+sqrt(%d)/%d\n",b1,a1,delta,a2):printf("sqrt(%d)/%d\n",delta,a2);
else b1!=0?printf("%d/%d+%d*sqrt(%d)/%d\n",b1,a1,d,delta,a2):printf("%d*sqrt(%d)/%d\n",d,delta,a2);
}
}
}
}
}
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...