有谁AC了,帮我对拍找一下反例
查看原帖
有谁AC了,帮我对拍找一下反例
1040830
ss_yangyucheng楼主2024/8/14 17:07
#include<bits/stdc++.h>
using namespace std;
int t,m;
int chuli(int n){
	int a[100],w=0;
	int tmp=n;
	for(int i=2;i<=n;i++){
		while(tmp%i==0){
			tmp/=i,a[++w]=i;
			if(tmp==1)
				break;
		}
		if(tmp==1)
			break;
	}
	int tong[1100],maxx=-1;
	memset(tong,0,sizeof(tong));
	for(int i=1;i<=w;i++){
		tong[a[i]]++;
		maxx=max(maxx,a[i]);
	}
	int ans=1,ans2=1;
	for(int i=2;i<=maxx;i++){
		if(tong[i]>=2){
			int c=tong[i]/2;
			int y=tong[i]%2;
			ans*=pow(i*i,c);
		}
	}
	return ans;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>t>>m;
	while(t--){
		int a,b,c;
		cin>>a>>b>>c;
		int tmpb=b*b;
		if(tmpb>=4*a*c){
			int ang=tmpb-4*a*c;
			int sang=sqrt(ang);
			if(sang!=sqrt(ang)){
				int numb=-b;
				int xi=chuli(ang);
				int ge=ang/xi;
				xi=sqrt(xi);
				if(a<0){
					numb=-numb;
					a=-a;
					if(numb%(2*a)==0&&numb!=0)
						cout<<numb/(2*a)<<"-";
					else{
						if(numb<0){
							cout<<"-";
							numb=-numb;
						}
						if(numb!=0){
							cout<<numb/(__gcd(numb,2*a));
							if(2*a!=1)
								cout<<"/"<<(2*a)/(__gcd(numb,2*a));
							if(xi!=0)
								cout<<"-";
						}
					}
					if(xi%(2*a)==0){
						if(xi/(2*a)!=1&&xi!=0)
							cout<<xi/(2*a)<<"*sqrt("<<ge<<")"<<endl;
						else
							if(xi!=0)
								cout<<"sqrt("<<ge<<")"<<endl;
					}
					else{
						if(xi!=0){
							if(xi/(__gcd(xi,2*a))!=1)
								cout<<xi/(__gcd(xi,2*a))<<"*sqrt("<<ge<<")";
							else
								cout<<"sqrt("<<ge<<")";
							if((2*a)/(__gcd(xi,2*a))!=1)
								cout<<"/"<<(2*a)/(__gcd(xi,2*a));
							else
								cout<<"sqrt("<<ge<<")"<<endl;
							cout<<endl;
						}	
						else
							cout<<endl;
					}
				}
				else{
					if(numb%(2*a)==0&&numb!=0)
						cout<<numb/(2*a)<<"+";
					else{
						if(numb<0){
							cout<<"-";
							numb=-numb;
						}
						if(numb!=0){
							cout<<numb/(__gcd(numb,2*a));
							if(2*a!=1)
								cout<<"/"<<(2*a)/(__gcd(numb,2*a));
							if(xi!=0)
								cout<<"+";
						}
					}
					if(xi%(2*a)==0){
						if(xi/(2*a)!=1&&xi!=0)
							cout<<xi/(2*a)<<"*sqrt("<<ge<<")"<<endl;
						else
							if(xi!=0)
								cout<<"sqrt("<<ge<<")"<<endl;
					}
					else{
						if(xi!=0){
							if(xi/(__gcd(xi,2*a))!=1)
								cout<<xi/(__gcd(xi,2*a))<<"*sqrt("<<ge<<")";
							else
								cout<<"sqrt("<<ge<<")";
							if((2*a)/(__gcd(xi,2*a))!=1)
								cout<<"/"<<(2*a)/(__gcd(xi,2*a));
							else
								cout<<"sqrt("<<ge<<")";
							cout<<endl;
						}	
						else
							cout<<endl;
					}
				}
			}
			else{
				int tmpa=2*a;
				int v1=(-b)+sang,v2=(-b)-sang;
				if(a<0){
					v1=-v1;
					v2=-v2;
					a=-a;
				}
				int tmpsang=max(v1,v2);
				if(tmpsang%tmpa==0)
					cout<<tmpsang/tmpa<<endl;
				else{
					int u=max(v1,v2);
					int tmpw;
					if(u<0){
						tmpw=__gcd(-u,2*a);
						cout<<"-"<<(-u)/tmpw<<"/"<<2*a/tmpw<<endl;
					}
					else{
						tmpw=__gcd(u,2*a);
						cout<<u/tmpw<<"/"<<2*a/tmpw<<endl;
					}
				}
			}
		}
		else
			cout<<"NO"<<endl;
	}
	return 0;
}
2024/8/14 17:07
加载中...