10分求助,不知道哪里错了。
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int t,m;
void print_youlishu(int a,int b){
// a/b
int _ = __gcd(a,b);
a /= _;
b /= _;
if(b < 0){
b = -b;
a = -a;
}
if(a == 0){
cout<<0;
return ;
}
if(b == 1){
printf("%d",a);
}else{
printf("%d/%d",a,b);
}
}
void print_wulishu(int a,int c,int b){
if(b < 0){
b = -b;
a = -a;
}
int _ = __gcd(a,b);
a /= _;
b /= _;
if(a == b){
printf("sqrt(%d)",c);
return ;
}
if(a == 1){
printf("sqrt(%d)/%d",c,b);
return ;
}
if(b == 1){
printf("%d*sqrt(%d)",a,c);
}else{
printf("%d*sqrt(%d)/%d",a,c,b);
}
return ;
}
void work(int a,int b,int c){
int sjx = b*b-4*a*c;
if(sjx < 0){
cout<<"NO\n";
return ;
}
if((int)(sqrt(sjx))*(int)(sqrt(sjx)) == sjx){
print_youlishu(sqrt(sjx)-b,2*a);
puts("");
return ;
}
if(b != 0){
print_youlishu(-b,2*a);
cout<<"+";
}
//求sqrt(sjx)/2a
int f = 1;
for(int i = 2; i*i <= sjx; i ++ ){
while(sjx%(i*i) == 0){
sjx /= i*i;
f *= i;
}
}
print_wulishu(f,sjx,2*a);
puts("");
}
int main(){
cin>>t>>m;
for(int i = 1; i <= t; i ++ ){
int a,b,c;
cin>>a>>b>>c;
work(a,b,c);
}
return 0;
}