社区讨论
求助! 70
P9750[CSP-J 2023] 一元二次方程参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m1n8y4ef
- 此快照首次捕获于
- 2024/09/29 15:15 去年
- 此快照最后确认于
- 2025/11/04 18:32 4 个月前
代码如下(码风勿喷)
CPP#include <bits/stdc++.h>
using namespace std;
int t,m;
int a,b,c;
int main() {
//freopen ("P9750_2.in","r",stdin);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin >> t >> m;
while(t--) {
cin >> a >> b >> c;
int det=b*b-4*a*c;
if(a<0) a*=-1,b*=-1,c*=-1;
if(det<0) {
cout << "NO\n";
continue;
}
int x=sqrt(det);
if(x*x==det) {
int y=x-b;
if(y%(2*a)==0) cout << y/(2*a) <<"\n";
else {
int z=__gcd(y,2*a);
cout << y/z << '/' << 2*a/z <<"\n";
}
continue;
}
int i=2,q=2;
while(i*i<det) {
if(det%(i*i)==0) q=i;
i++;
}
int z=__gcd(abs(-b),abs(2*a));
if(-b<0&&2*a<0) z*=-1;
if(b!=0){
cout << -b/z;
if(2*a!=z) cout << "/" << 2*a/z ;
cout << '+';
}
if(det%(q*q)==0){
z=__gcd(q,2*a);
if(q!=z) cout << q/z << '*';
cout << "sqrt(" << det/(q*q) << ")";
if(z!=a*2) cout << '/' << 2*a/z;
cout <<"\n";
}
else{
cout << "sqrt(" << det << ")/" << 2*a << '\n';
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...