救救孩子吧!
  • 板块题目总版
  • 楼主tornado01
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/22 22:21
  • 上次更新2023/10/22 22:56:51
查看原帖
救救孩子吧!
716013
tornado01楼主2023/10/22 22:21
#include<bits/stdc++.h>
using namespace std;
long long t,m,a,b,c;
long long bb,aa,temp,mul_sq,sqans;
bool isprime[100100];
long long prime[100100],cnt=0;
long long tf=1;
long long gcd(long long a,long long b)
{
	if(b==0) return a;
	return gcd(b,a%b);
}
void init()
{
	memset(isprime,1,sizeof isprime);
	isprime[1]=0;
	for(long long i=2;i<=10000;i++)
	{
		if(isprime[i]) prime[++cnt]=i;
		for(long long j=1;j<=cnt&&i*prime[j]<=10000;j++)
		{
			isprime[i*prime[j]]=0;
			if(i%prime[j]==0) break;
		}
	}
	return ;
}
long long fen(long long x)
{
	long long ans=1;
	for(long long i=1;i<=cnt;i++)
	{
		long long flag=0;
		while(x%prime[i]==0&&x>1) x/=prime[i],flag++;
		if(flag%2==1) x*=prime[i],flag--;
		for(long long j=1;j<=flag/2;j++) ans*=prime[i];
		if(x<=1) break;
	}
	sqans=x;
	return ans;
}
void print(long long aa,long long bb,long long cc,long long dd,long long ee)
{
	long long temp;
	if(ee==0)
	{
		//cout<<"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   "<<aa<<" "<<bb<<'\n';
		temp=gcd(aa,bb),aa/=temp,bb/=temp;
		if(bb<0) bb*=-1,aa*=-1;
		if(aa!=0&&bb!=1) cout<<aa<<"/"<<bb;
		else if(aa!=0&&bb==1) cout<<aa;
		else cout<<0<<'\n';
		cout<<"\n";
	}
	else if(ee==1)
	{
		temp=gcd(aa,bb),aa/=temp,bb/=temp;
		if(bb<0) bb*=-1,aa*=-1;
		aa+=abs(cc);
		if(aa!=0&&bb!=1) cout<<aa<<"/"<<bb;
		else if(aa!=0&&bb==1) cout<<aa;
		else cout<<0;
		cout<<"\n";
	}
	else 
	{
		temp=gcd(aa,bb),aa/=temp,bb/=temp;
		temp=gcd(cc,dd),cc/=temp,dd/=temp;
		if(bb<0) bb*=-1,aa*=-1;
		if(dd<0) dd*=-1,cc*=-1;
		cc=abs(cc),dd=abs(dd);
		//cout<<"!!!!!!!!!!!!!!!!!!!!!! "<<aa<<" "<<bb<<" "<<cc<<" "<<dd<<'\n';
		if(aa!=0&&bb!=1) cout<<aa<<"/"<<bb;
		else if(aa!=0&&bb==1) cout<<aa;
		if(aa!=0) cout<<"+";
		if(cc!=1&&dd!=1) cout<<cc<<"*sqrt("<<ee<<")"<<"/"<<dd<<"\n";
		else if(cc!=1&&dd==1) cout<<cc<<"*sqrt("<<ee<<")"<<"\n";
		else if(cc==1&&dd!=1) cout<<"sqrt("<<ee<<")"<<"/"<<dd<<"\n";
		else cout<<"sqrt("<<ee<<")"<<"\n";
		
	}

	return ;
}
int main()
{
	//freopen("uqe.in","r",stdin);
	//freopen("uqe.out","w",stdout);
	//ios::sync_with_stdio(false);
	//cin.tie(0),cout.tie(0);
	cin>>t>>m;
	init();
	while(t--)
	{
		cin>>a>>b>>c;
		bb=-b,aa=2*a,temp=0,mul_sq=0,sqans=b*b-4*a*c;
		if(sqans<0) {cout<<"NO\n";continue;}
		mul_sq=fen(sqans);
		print(bb,aa,mul_sq,aa,sqans);
	}
	return 0;
}

CCF居然考大模拟........C

求hack/求调

2023/10/22 22:21
加载中...