跟我比码风
  • 板块灌水区
  • 楼主xiao999yao
  • 当前回复17
  • 已保存回复17
  • 发布时间2024/12/8 21:17
  • 上次更新2024/12/9 15:27:49
查看原帖
跟我比码风
1062722
xiao999yao楼主2024/12/8 21:17

@normalpcer

https://www.luogu.com.cn/discuss/1017140

跟我比马蜂?

    #include<bits\
/stdc++.h>
         #define      ll    long         long
        using      namespace     std      ;
         inline      ll   read      (     ){
   	ll      x    =0     ,y        =1            ;
        	ch\
a\
r          c   =ge\
tchar       (      )          ;
        	whil\
e        (c<'0'||c>'9'){
		if\
(c=='-')\
y\
=-1\
;
		c=getc\
har();
	}
	while(\
c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'\
0',c=get\
char\
();
	retur\
n x*y;
}
ll \
T,M,\
a,b,c,delta;
ll gcd(ll a,ll b){
	if(b==0)return a\
;
	return g\
cd(b,a%b);
}
int main(){
	T=read()\
;M=read();
	while(T--){
		a=\
read();b=rea\
d();c=read();
		\
delta=b*b-4*a*c;
		if(delta<0){
			printf\
("NO\n");
		}else \
if(delta==0){
			ll p=-b,q=2*a;
			ll pq=gcd(abs(q),abs(p));
			\
p/=pq,q/=pq;
			if(q<0)q=-q,p=-p;
			if(q==1)printf("%lld\n",p);
			else printf("%\
lld/%lld\n\
",p,q);
		}\
else{
			ll p=-b,q=2*a;
			ll sq=(ll)sqrt(delta);
	\
		if(sq*sq==delta){
				if(q>0)p+=sq;
				else p-=sq;
			\
	ll pq=\
gcd(a\
bs(q),abs(p));
				p/=pq,q/=pq;
				if(q<0)q=-q,p=-p;
			\
	if(q==1)printf("%\
lld\n",p);
				else printf("%lld/%lld\n\
",p,q);
			}else{
				ll \
p\
q=gcd(abs(q),abs(p));
				\
p/=pq,q/=pq;
			\
	if(\
q<0)\
q=-q,p=-p;
				\
if(\
p!=0){
					if(q==1)prin\
t\
f(\
"%lld+",p);
					else printf("\
%lld/%lld+",p,q\
);
				}
				q=abs(2*a);
				p=1;
	\
			ll t=0;
				for(int r=sq;r>=1;r--)
					if(del\
ta\
%(r*r)==0){
						p*=r;
						t\
=delta/(r*r);
						\
break;
					}
\
				pq=gc\
d(\
abs(q),abs(p));
				p/=pq,q/=pq;
				if(\
q<0)q=-q,p=-p;
			\
	if(p==q) pri\
nt\
f(\
"s\
qrt(%lld)\
\n",t);
				else if(q==1) printf("%lld*sqrt(%lld)\n",p,t);
				else if(p==1) printf("sqrt(%ll\
d)/%\
lld\n",t,q);
\
				els\
e printf("%l\
ld\
*sq\
rt(%l\
l\
d)/%lld\n",p,t,q);
			}
		}
	}
	return 0;
}
2024/12/8 21:17
加载中...