CSP-J T3 60pts求调
  • 板块学术版
  • 楼主SWAP__
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/27 21:53
  • 上次更新2023/10/27 21:54:39
查看原帖
CSP-J T3 60pts求调
1014614
SWAP__楼主2023/10/27 21:53
#include<bits/stdc++.h>
using namespace std;
int t,m,a,b,c;
void f(int x,int s){
	if(!x){
		return;
	}
	int g=__gcd(x,s);
	x/=g,s/=g;
	if(s<0){
		s*=-1,x*=-1;
	}
	if(s==1){//可被整除
		printf("%d",x);
	}else{
		printf("%d/%d",x,s);
	}
}
void out(int x,int d){//分母,判别式
	if(d<0){
		printf("NO\n");
		return;
	}
	char c=x>0?'+':'-';
	int s=-b;
	int g=1;
	for(int i=2;i*i<=d;i++){
		int k=i*i;
		while(d%k==0){
			g*=i;
			d/=k;
		}
	}
	if(!d)g=0;
	if(d>1){//有根号
		//cout<<d<<" "<<g<<" ";
		f(-b,x);
		if(d>1){
			int j=__gcd(g,x);
			g/=j,x/=j;
			if(x<0){
				s*=-1,x*=-1;
			}
		}
		if(b){
			printf("%c",c);
		}
		if(g>1){
			printf("%d*",g);
		}
		printf("sqrt(%d)",d,x);
		if(x!=1){
			printf("/%d",x);
		}
		puts("");
	}else{//完全平方数
		d=x>0?-b+g:-b-g;
		if(!d){
			printf("0");
		}
		f(d,x);
		puts("");
	}
}
int main(){
	cin>>t>>m;
	while(t--){
		cin>>a>>b>>c;
		out(2*a,b*b-4*a*c);
	}
}
2023/10/27 21:53
加载中...