社区讨论

救我,我让我几个同学都关注您

灌水区参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@loa4708e
此快照首次捕获于
2023/10/28 22:05
2 年前
此快照最后确认于
2023/11/02 10:59
2 年前
查看原帖
2023 CSP-J T3求调!!!
CPP
#include<bits/stdc++.h>
using namespace std;
int T,a,b,c,delta,m,bc,s;
bool nah;
void hj(int x,int y)
{
//	cout<<"youlishu:";
	int flag=0;
	if(x<0)flag++;
	if(y<0)flag++;
	if(flag%2==1)
	{
		cout<<"-"; 
	}
	x=abs(x);
	y=abs(y);
	if(x==y)
	{
		cout<<1;
		return ;
	}
	vector<int> ys;
	int i=2;
	for(;i*i<x;i++)
	{
		if(x%i==0)
		{
			ys.push_back(i);
			ys.push_back(x/i);
		}
	}
	if(x%(i*i)==0)
	{
		ys.push_back(i);
	}
	sort(ys.begin(),ys.end());
//	for(i=0;i<ys.size();i++)
//	{
//		cout<<ys[i]<<" ";
//	}
	if(!ys.empty())
		while(x>=ys.front()&&y>=ys.front()&&!ys.empty())
		{
			while(y%ys.front()==0&&x%ys.front()==0)
			{
				x=x/ys.front();
				y=y/ys.front();
			}
			ys.erase(ys.begin());
		}
	if(x==0)cout<<0;
	else if(y==1)cout<<x;
	else cout<<x<<"/"<<y;
}
void hj2(int x,int y)
{
//	cout<<"youlishu:";
	int flag=0;
	if(x<0)flag++;
	if(y<0)flag++;
	if(flag%2==1)
	{
		cout<<"-"; 
	}
	x=abs(x);
	y=abs(y);
	if(x==y)
	{
		cout<<1;
		return ;
	}
	vector<int> ys;
	int i=2;
	for(;i*i<x;i++)
	{
		if(x%i==0)
		{
			ys.push_back(i);
			ys.push_back(x/i);
		}
	}
	if(x%(i*i)==0)
	{
		ys.push_back(i);
	}
	sort(ys.begin(),ys.end());
//	for(i=0;i<ys.size();i++)
//	{
//		cout<<ys[i]<<" ";
//	}
	if(!ys.empty())
		while(x>=ys.front()&&y>=ys.front()&&!ys.empty())
		{
			while(y%ys.front()==0&&x%ys.front()==0)
			{
				x=x/ys.front();
				y=y/ys.front();
			}
			ys.erase(ys.begin());
		}
	if(x==0)
	{
		nah=1;
		return ;
	}
	else if(y==1)cout<<x;
	else cout<<x<<"/"<<y;
}
void hj3(int x,int del,int y)
{
//	cout<<"youlishu:";
	int flag=0;
	if(x<0)flag++;
	if(y<0)flag++;
	if(flag%2==1)
	{
		cout<<"-"; 
	}
	x=abs(x);
	y=abs(y);
	if(x==y)
	{
		cout<<1;
		return ;
	}
	vector<int> ys;
	int i=2;
	for(;i*i<x;i++)
	{
		if(x%i==0)
		{
			ys.push_back(i);
			ys.push_back(x/i);
		}
	}
	if(x%(i*i)==0)
	{
		ys.push_back(i);
	}
	sort(ys.begin(),ys.end());
//	for(i=0;i<ys.size();i++)
//	{
//		cout<<ys[i]<<" ";
//	}
	if(!ys.empty())
		while(x>=ys.front()&&y>=ys.front()&&!ys.empty())
		{
			while(y%ys.front()==0&&x%ys.front()==0)
			{
				x=x/ys.front();
				y=y/ys.front();
			}
			ys.erase(ys.begin());
		}
	if(x==0)cout<<"\b";
	else if(x==1)cout<<"sqrt("<<del<<")"<<"/"<<y;
	else if(y==1)cout<<x<<"*sqrt("<<del<<")";
	else cout<<x<<"*sqrt("<<del<<")/"<<y;
}
int main()
{
	cin>>T>>m;
	while(T--)
	{
		cin>>a>>b>>c;
		delta=b*b-4*a*c;
		if(delta<0)
		{
			cout<<"NO\n";
			continue;
		}
		else
		{
			int dou=1,csq=2;
//			cout<<"delta"<<":\n"<<delta<<"\n";
			if(delta==0)
			{
				dou=-1;
			}
			else
			{
				while(csq*csq<=delta)
				{
					while(delta%(csq*csq)==0)
					{
						delta=delta/(csq*csq);
						dou=dou*csq;
					}
					csq++;
				}
			}
			if(delta==1||delta==0)
			{
				if(delta==0)
				{
					bc=-b;
				}
				else if(2*a<0)
				{
					bc=-b-dou;
				}
				else 
				{
					bc=-b+dou;
				}
				hj(bc,2*a);
				cout<<"\n";
			}
			else
			{
				bc=-b;
				nah=0;
				hj2(bc,2*a);
				if(nah==0)cout<<"+";
				hj3(bc,delta,2*a);
				cout<<"\n";
			}
		}
	}
	return 0;
} 

回复

0 条回复,欢迎继续交流。

正在加载回复...