j组t3求hack
  • 板块学术版
  • 楼主Lunar_Hjj
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/10/21 21:57
  • 上次更新2023/11/2 12:06:34
查看原帖
j组t3求hack
600066
Lunar_Hjj楼主2023/10/21 21:57

rt,不知道哪里错了,大样例过了,但只有30pts

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int t,m;
int jdz(int x)
{
	if(x<0)return -x;
	else return x;
}
struct Real
{
	int qd,qs,rs,rd,rg;
	int qz;	
	void changeq()
	{
		if((qd*qs)>=0)
		{
			qz=1;			
		}
		else
		{
			qz=-1;
		}
		qd=jdz(qd);
		qs=jdz(qs);
		int k=__gcd(qd,qs);
		qd/=k;
		qs/=k;
	}
	void changer()
	{
		if(rg==0)
		{
			rs=0;
			return;
		}
		for(int i=2;i<=34;++i)
		{
			int tmp=i*i;
			while((rg%tmp)==0)
			{
				rg/=tmp;
				rs*=i;
			}
			
		}
		int k1=__gcd(rd,rs);
		rd/=k1;
		rs/=k1;
		if(rg==1)
		{
			if(qz==1)
			{
				int k=qd*rd/__gcd(qd,rd);
				qs*=k/qd;
				rs*=k/rd;
				qs+=rs;
				qd=k;
				rs=0;
			}
			else
			{
				int k=qd*rd/__gcd(qd,rd);
				qs*=k/qd;
				rs*=k/rd;
				qs-=rs;
				qd=k;
				rs=0;
				if(qs<=0)
				{
					qz=1;
					qs=jdz(qs);
				}
			}
			int k=__gcd(qd,qs);
			qd/=k;
			qs/=k;
		}
	}
	void printR()
	{
		if(qs==0&&rs==0)cout<<0;
		else if(qs!=0)
		{
			if(qz==-1)cout<<"-";
			if(qs%qd==0)
			{
				cout<<qs/qd;
			}
			else if(qd==1)
			{
				cout<<qs;
			}
			else
			cout<<qs<<"/"<<qd;
			if(rs!=0)
			{
				cout<<"+";
				if(rs==1&&rd==1)
				{
					cout<<"sqrt("<<rg<<")";
				}
				else if(rs==1&&rd!=1)
				{				
					cout<<"sqrt("<<rg<<")"<<"/"<<rd;
				}
				else if(rd==1&&rs!=1)
				{
					cout<<rs<<"*"<<"sqrt("<<rg<<")";
				}
				else
				{
					cout<<rs<<"*"<<"sqrt("<<rg<<")"<<"/"<<rd;
				}
			}
		}
		else
		{
			if(rs==1&&rd==1)
			{
				cout<<"sqrt("<<rg<<")";
			}
			else if(rs==1&&rd!=1)
			{				
				cout<<"sqrt("<<rg<<")"<<"/"<<rd;
			}
			else if(rd==1&&rs!=1)
			{
				cout<<rs<<"*"<<"sqrt("<<rg<<")";
			}
			else
			{
				cout<<rs<<"*"<<"sqrt("<<rg<<")"<<"/"<<rd;
			}
		}
		cout<<"\n";
	}
	void work(int a,int b,int c)
	{
		qd=2*a,qs=-b;
		rd=jdz(2*a),rs=1;
		rg=b*b-4*a*c;
		changeq();
		changer();
		printR();
	}
};
signed main()
{
// 	freopen("uqe.in","r",stdin);
// 	freopen("uqe.out","w",stdout);
//	ios::sync_with_stdio(0);
//	cin.tie(0);
//	cout.tie(0);
	cin>>t>>m;
	while(t--)
	{
		int a,b,c;
		cin>>a>>b>>c;
		int delta=b*b-4*a*c;
		if(delta<0)
		{
			cout<<"NO\n";
		}
		else
		{
			Real x;
			x.work(a,b,c);
		}
	}
}
2023/10/21 21:57
加载中...