J组T3大样例过了0分求调
  • 板块学术版
  • 楼主ICU152_lowa_IS8
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/10/21 20:13
  • 上次更新2023/11/2 12:10:17
查看原帖
J组T3大样例过了0分求调
933802
ICU152_lowa_IS8楼主2023/10/21 20:13

我不理解!!!!!!!!

#include<bits/stdc++.h>
#define eps 1e-9
int bin[100005];
int t,m;
using namespace std;
int gcd(int x,int y){
	if(x%y==0)return y;
	return gcd(y,x%y);
}
void print(int b,int a,int t){
	//cout<<b<<" "<<a<<" "<<t<<endl;
	int fl=0,na=a,nb=1;
	if(t<0){
		t=-t;
		nb=-1;
	}
	//cout<<nb<<endl;
	if((int)sqrt(t)*(int)sqrt(t)==t){
		fl=1;
	}
	if(!fl)
	for(int i=2;i<=m;i++){
		if(t%bin[i]==0){
			while(t%bin[i]==0){
				t/=bin[i];
				nb*=i;
			}
		}
	}
	int tmp=gcd(abs(na),abs(nb));
	if((nb>0&&na<0)||(nb<0&&na<0)){
		nb=-nb;
		na=-na;
	}
	if((b<0&&a<0)||(b>0&&a<0)){
		b=-b;
		a=-a;
	}
	if(fl){
		b+=sqrt(t);
	}
	nb/=tmp;
	na/=tmp;
	if(b!=0){
		if(b%a==0){
			cout<<b/a;
		}
		else{
			
			int tmp=gcd(abs(a),abs(b));
			//cout<<tmp<<endl;
			cout<<b/tmp<<"/"<<a/tmp;
		}
		if(!fl)
			cout<<"+";
	}
	if(!fl){	
		//cout<<nb<<" "<<na<<endl;
		if(nb%na==0){
			nb/=na;
		}
		if(nb!=1){
			cout<<nb<<"*";
		}
		cout<<"sqrt("<<t<<")";
		if(na!=1){
			cout<<"/"<<na;
		}
	}
	cout<<endl;
}
int main(){
	freopen("uqe.in","r",stdin);
	freopen("uqe.out","w",stdout);
	cin>>t>>m;
	for(int i=2;i<=m;i++){
		bin[i]=i*i;
	}
	while(t--){
		long long a,b,c;
		cin>>a>>b>>c;
		long long t=b*b-4*a*c;
		if(t<0){
			cout<<"NO\n";
			continue;
		}
		double x1=(1.0*(-b)+sqrt(t*1.0))/2.0/a,x2=(1.0*(-b)-sqrt(t*1.0))/2.0/a;
		if(x1+eps<x2){
			//cout<<"jak";
			print(-b,2*a,-t);
		}
		else if(x2+eps<x1){
			print(-b,2*a,t);
		}
		else{
			print(-b,2*a,abs(t));
		}
	}
	return 0;
}



2023/10/21 20:13
加载中...