AC感想
查看原帖
AC感想
1280199
zqh_7plus楼主2024/8/31 19:33

没错还是我QWQ,你可以在下面的帖子找到我

两天了,终于A了,说一下我的感想

我的代码主体都是对的,就错在了输出较大的结果上QAQ

我在比较的时候用的是如下代码

			int fz=0-b+sqrt(d),fm=2*a;int k=abs(__gcd(fz,fm));fz/=k;fm/=k;
			int fzz=0-b-sqrt(d),fmm=2*a;k=abs(__gcd(fzz,fmm));fzz/=k;fmm/=k;
			long double  kk1=fzz/fmm,kk2=fz/fm;
			if(kk1>kk2){swap(fzz,fz);swap(fmm,fm);}

但是他有一个问题导致他无法正确比较,就是在计算的时候由于

fz
fm
fzz
fmm

都是整数,所以算出来也是整数终于在下载样例之后被我发现了,之后我就改成了这样:

			int fz=0-b+sqrt(d),fm=2*a;int k=abs(__gcd(fz,fm));fz/=k;fm/=k;
			int fzz=0-b-sqrt(d),fmm=2*a;k=abs(__gcd(fzz,fmm));fzz/=k;fmm/=k;
			long double  kk1=(double)fzz/fmm,kk2=(double)fz/fm;
			if(kk1>kk2){swap(fzz,fz);swap(fmm,fm);}

加了一个

(double)

然后。。。就A了;

对了,在这期间我还改了一个地方:在无理数的时候,

q1+q2*sqrt(n)

这里一定是“+”,不会是“-”!!!

最后贴上我的醉人代码QWQ:

#include<bits/stdc++.h>
using namespace std;
bool cf(int n){int x=sqrt(n);return x*x==n;}
int fj(int n){for(int i=sqrt(n);i>=1;i--)if(n%(i*i)==0)return i;}
int t,m,a,b,c,d;
int main( ){
	cin>>t>>m;
	while(t--){
		cin>>a>>b>>c;
		d=b*b-4*a*c;
		if(d<0){cout<<"NO"<<endl;continue;}
		if(cf(d)){
			int fz=0-b+sqrt(d),fm=2*a;int k=abs(__gcd(fz,fm));fz/=k;fm/=k;
			int fzz=0-b-sqrt(d),fmm=2*a;k=abs(__gcd(fzz,fmm));fzz/=k;fmm/=k;
			long double  kk1=(double)fzz/fmm,kk2=(double)fz/fm;
			if(kk1>kk2){swap(fzz,fz);swap(fmm,fm);}
			if(fz==0){cout<<0<<endl;continue;}
			long double  kkk=(long double)fz/fm;fz=abs(fz);fm=abs(fm);
			if(kkk<0.0) cout<<'-';
			cout<<fz;
			if(fm!=1) cout<<'/'<<fm;
			cout<<endl;
		}else{
			int fz1=0-b,fm1=2*a,boo=0;int k1=abs(__gcd(fz1,fm1));fz1/=k1;fm1/=k1;
			string ans1,ans2;
			if(fz1==0){ans1="-1";boo=1;}
			if(boo==0){
				long double kkk=(double)fz1/fm1;fz1=abs(fz1);fm1=abs(fm1);
				if(kkk<0.0) cout<<'-';
				cout<<fz1;
				if(fm1!=1) cout<<'/'<<fm1;
			}
			if(d==0){cout<<endl;continue;}
			else if(boo==0) cout<<'+';
			int fz2=fj(d),fm2=2*a;d/=fz2;d/=fz2;int k2=abs(__gcd(fz2,fm2));fz2/=k2;fm2/=k2;fz2=abs(fz2);fm2=abs(fm2);
			if(fz2!=1)cout<<fz2<<'*';
			cout<<"sqrt("<<d<<")";
			if(fm2!=1) cout<<'/'<<fm2;
			cout<<endl;
		}
	}
}
2024/8/31 19:33
加载中...