J组T3官方比洛谷挂了50分
  • 板块灌水区
  • 楼主Dangerise
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/30 12:24
  • 上次更新2023/11/2 10:43:13
查看原帖
J组T3官方比洛谷挂了50分
371409
Dangerise楼主2023/10/30 12:24

RT

评测记录评测记录

代码如下

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

inline int qread() {
	int ans=0;
	bool f=0;
	char c=getchar();
	while(c<'0'||c>'9') {
		if(c=='-') {
			f=1;
		}
		c=getchar();
	}
	while(c>='0'&&c<='9') {
		ans=ans*10+c-'0';
		c=getchar();
	}
	if(f) {
		return -ans;
	} else {
		return ans;
	}
}

inline ll gcd(ll a,ll b) {
	ll t;
	while(b>0) {
		t=a;
		a=b;
		b=t%a;
	}
	return a;
}

bool vis[1010000];
int z[101000],zs;

inline void gz(int n) {
	for(int i=2; i<=n; i++) {
		if(!vis[i]) {
			z[zs++]=i;
		}
		for(int j=0; i*z[j]<=n&&j<zs; j++) {
			vis[i*z[j]]=1;
		}
	}
}

struct F {
	ll h,d;
	bool f;
	void yf() {
		ll g=gcd(h,d);
		h/=g,d/=g;
	}
	void print() {
		if(f) {
			putchar('-');
		}
		printf("%lld/%lld\n",h,d);
	}
};

inline F nf(ll h,ll d) {
	bool f;
	if((h<0&&d<0)||(h>=0&&d>0)) {
		f=0;
	} else {
		f=1;
	}
	F fs;
	fs.h=llabs(h),fs.d=llabs(d),fs.f=f;
	return fs;
}

int t,m;
ll a,b,c;
int main() {
// 	freopen("uqe.in","r",stdin);
// 	freopen("uqe.out","w",stdout);

	gz(100000);

//	for(int i=0; i<100; i++) {
//		printf("%d\n",z[i]);
//	}
//	return 0;

	t=qread(),m=qread();
	while(t--) {
//		putchar('\n');
		a=qread(),b=qread(),c=qread();

		ll d=b*b-4*a*c;
		if(d<0) {
			printf("NO\n");
			continue;
		}

		ll x=-b,y=1;
		for(int i=0; i<zs; i++) {
			ll zn=z[i];
			ll p=zn*zn;
			if(d<p) {
				break;
			}
			while(d%p==0) {
				d/=p;
				y*=zn;
			}
		}

		F q1= nf(x,2*a),q2= nf(y,2*a);
		q1.yf(),q2.yf();
		if(a<0) {
			q2.f=!q2.f;
		}

//		printf("\nDebug :\n");
//		printf("q1 = ");
//		q1.print();
//		printf("q2 = ");
//		q2.print();
//		printf("d = %lld\n",d);

		if(d==1) {
			F ans;
//			printf("h : %lld , d : %lld\n",q1.h*q2.d+q1.d*q2.h,q1.d*q2.d);
			if(q1.f==0&&q2.f==1) {
				ans=nf(q1.h*q2.d-q1.d*q2.h,q1.d*q2.d);
				ans.f=q1.h*q2.d-q1.d*q2.h<0;
			} else if(q1.f==1&&q2.f==0) {
				ans=nf(-q1.h*q2.d+q1.d*q2.h,q1.d*q2.d);
				ans.f=-q1.h*q2.d+q1.d*q2.h<0;
			} else {
				ans=nf(q1.h*q2.d+q1.d*q2.h,q1.d*q2.d);
				ans.f=q1.f;
			}
			ans.yf();

			if(ans.f) {
				putchar('-');
			}
			printf("%lld",ans.h);
			if(ans.d!=1) {
				printf("/%lld",ans.d);
			}
			putchar('\n');
			continue;
		}

		if(q1.h>0) {
			if(q1.f) {
				putchar('-');
			}
			printf("%lld",q1.h);
			if(q1.d!=1) {
				printf("/%lld",q1.d);
			}
		}
		if(d==0) {
			putchar('\n');
			continue;
		}
		if(q1.h>0&&q2.f==0) {
			putchar('+');
		}
		if(q2.f) {
			putchar('-');
		}
		if(q2.h>1) {
			printf("%lld",q2.h);
		}
		if(d>1) {
			if(q2.h>1) {
				putchar('*');
			}
			printf("sqrt(%lld)",d);
		}
		if(q2.d>1) {
			printf("/%lld",q2.d);
		}
		putchar('\n');
	}
	return 0;
}
2023/10/30 12:24
加载中...