J T3求调
  • 板块学术版
  • 楼主Zhouyc2009
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/10/22 19:12
  • 上次更新2023/11/2 11:50:07
查看原帖
J T3求调
347750
Zhouyc2009楼主2023/10/22 19:12
#include<bits/stdc++.h>
using namespace std;
int T,m,a,b,c,num;
inline int getsqrt()
{
	int ans=1;
	for (int i=sqrt(num);i>=2;i--)
	  if (num%(i*i)==0) ans=ans*i,num=num/i/i;
	return ans;
}
inline int gcd(int x,int y)
{
	if (x==0) return y;
	return gcd(y%x,x);
}
inline void work1()
{
	bool flag=0;
	int t1=(-b+sqrt(num)),t2=2*a;
//	cout<<p<<' '<<q<<endl;
	if (t1%t2==0){
		cout<<t1/t2<<endl;
		return;
	}
	if (t1<0) flag=1;
	t1=abs(t1);
	if (flag) cout<<'-';
	cout<<t1/gcd(t1,t2)<<'/'<<t2/gcd(t1,t2)<<endl;
}
inline void work2()
{
	//cout<<getsqrt()<<endl;
	bool flag=0;
	int t1=-b,t2=2*a,t3=getsqrt(),t4;
	if (t3==1) t4=num;
	  else t4=num%(t3*t3);
	if (t1<0) flag=1;
	t1=abs(t1);
	if (t1!=0)
	{
		if (flag) cout<<'-';
		if (t1%t2==0) cout<<t1/t2;
		  else cout<<t1/gcd(t1,t2)<<'/'<<t2/gcd(t1,t2);
		cout<<'+';
	}
	if (t4!=0&&t3/gcd(t2,t3)!=1)
	{
		if (t3%t2==0) cout<<t3/t2;
		    else cout<<t3/gcd(t2,t3);
		cout<<'*';
		//cout<<t2<<' ';
	}
	t2=t2/gcd(t2,t3);
	cout<<"sqrt("<<t4<<")";
	if (t2!=1) cout<<"/"<<t2;
	cout<<endl;
}
int main()
{
	//freopen("uqe.in","r",stdin);
	//freopen("uqe.out","w",stdout);
	cin>>T>>m;
	while (T--)
	{
		cin>>a>>b>>c;
		if (a<0) a=-a,b=-b,c=-c;
		num=b*b-4*a*c;
		if (num<0){
			cout<<"NO"<<endl;
			continue;
		}
		int numm=sqrt(num);
		if (numm*numm==num) work1();
		  else work2();
	}
}

60分,不知道哪里处理错了

2023/10/22 19:12
加载中...