社区讨论
RE但是 程序整体没问题 急急急!!!
P9750[CSP-J 2023] 一元二次方程参与者 5已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @m1npt7uy
- 此快照首次捕获于
- 2024/09/29 23:07 去年
- 此快照最后确认于
- 2025/11/04 18:29 4 个月前
谢谢帮助!
CPP#include<bits/stdc++.h>
using namespace std;
int T,M;
int a,b,c,d;
int gcd(int m,int n){
if(m%n==0) return n;
return gcd(n,m%n);
}
void step1(int a,int b,int c,int d){
int p=-b,q=2*a;
int sum=gcd(abs(q),abs(p));
p=p/sum;
q=q/sum;
if(q<0){
q=-q;
p=-p;
}
if(q==1) printf("%d\n",p);
else printf("%d/%d\n",p,q);
}
void step2(int a,int b,int c,int d){
int q=2*a,p=-b,d2=(int)sqrt(d);
if(d2*d2==d){
if(q>0) p+=d2;
else p-=d2;
int sum=gcd(abs(p),abs(q));
p/=sum;
q/=sum;
if(q<0){
q=-q;
p=-p;
}
if(q==1) printf("%d\n",p);
else printf("%d/%d\n",p,q);
}
else{
int sum=gcd(abs(q),abs(p));
p/=sum;
q/=sum;
if(q<0){
q=-q;
p=-p;
}
if(p!=0){
if(q==1) printf("%d+",p);
else printf("%d/%d+",p,q);
}
p=1;
q=abs(2*a);
int bkf=0;
for(int j=d2;j>=1;j--){
if(d%(j*j)==0){
p*=j;
bkf=d/(j*j);
break;
}
}
sum=gcd(abs(q),abs(p));
q/=sum;
p/=sum;
if(q<0){
p=-p;
q=-q;
}
if(p==q) printf("sqrt(%d)\n",bkf);
else if(q==1) printf("%d*sqrt(%d)\n",p,bkf);
else if(p==1) printf("sqrt(%d)/%d\n",bkf,q);
else printf("%d*sqrt(%d)/%d\n",p,bkf,q);
}
}
int main(){
scanf("%d%d",&T,&M);
for(int i=1;i<=T;i++){
scanf("%d%d%d",&a,&b,&c);
d=b*b-4*a*c;
if(d<0) printf("NO\n");
else if(d==0) step1(a,b,c,d);
else step2(a,b,c,d);
}
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...