P9750样例全部正确,不给过,求解决
  • 板块题目总版
  • 楼主xzl931122
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/1/6 14:47
  • 上次更新2024/1/6 17:16:38
查看原帖
P9750样例全部正确,不给过,求解决
1068944
xzl931122楼主2024/1/6 14:47
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int gcd(int x1,int  x2)
{
	if(x2==0) return x1;
	return gcd(x2,x1%x2);
} 
int main()
{
	freopen("uqe2.in","r",stdin);
    freopen("2.out","w",stdout);
	int z,m,k,a,b,c,t,d;
	cin>>z>>m;
	for(int i=1;i<=z;i++)
	{
		cin>>a>>b>>c;
		d=pow(b,2)-4*a*c,k=1;
		if(d<0) 
		{
			puts("NO");
			continue;
		}
		if(a<0) 
		{
			a=-a;b=-b;c=-c;
		}
		for(int i=2;i*i<=d;i++)
		{
			while(d%(i*i)==0)
			{
				k*=i;d/=(i*i);
			}
		}
		if(d==0||d==1) 
		{
			t=abs(gcd(2*a,-b+k*d));
			if(2*a/t!=1)
			{
				cout<<(-b+k*d)/t<<"/"<<2*a/t<<"\n";
				continue;
			}
			else
			{
				cout<<(-b+k*d)/t<<"\n";
				continue;
			}
			 
		}
		if(b==0) 
		{
			t=gcd(k,2*a);
			cout<<k/t<<"*sqrt("<<d<<")";
			if(2*a/t!=1) cout<<"/"<<2*a/t;
			cout<<"\n";
			continue;
		}
		int t1=abs(gcd(-b,2*a));
		int t2=abs(gcd(k,2*a));
		if(2*a/t1==1&&2*a/t2==1) 
		{
			if(k/t2!=1)	cout<<-b/t1<<"+"<<k/t2<<"*sqrt("<<d<<")"<<"\n";
			else  cout<<-b/t1<<"+"<<"sqrt("<<d<<")"<<"\n";
			continue;
		} 
		else if(2*a/t1==1) 
		{	
			if(k/t2!=1)cout<<-b/t1<<"+"<<k/t2<<"*sqrt("<<d<<")"<<"/"<<2*a/t2<<"\n";
			else cout<<-b/t1<<"+"<<"sqrt("<<d<<")"<<"/"<<2*a/t2<<"\n";
			continue;
		}
		else if(2*a/t2==1) 
		{
			if(k/t2!=1)cout<<-b/t1<<"/"<<2*a/t1<<"+"<<k/t2<<"*sqrt("<<d<<")"<<"\n";
			else cout<<-b/t1<<"/"<<2*a/t1<<"+"<<"sqrt("<<d<<")"<<"\n";
			continue;
		}
		else 
		{
			if(k/t2!=1)cout<<-b/t1<<"/"<<2*a/t1<<"+"<<k/t2<<"*sqrt("<<d<<")"<<"/"<<2*a/t2<<"\n";
			else cout<<-b/t1<<"/"<<2*a/t1<<"+"<<"sqrt("<<d<<")"<<"/"<<2*a/t2<<"\n";
			continue;
		}
	}	
	return 0;
}
2024/1/6 14:47
加载中...