2 条题解
-
0
#include<bits/stdc++.h> using namespace std ; long long t,m,a,b,c,de; long long gcd(long long x,long long y) { if(y==0)return x; else return gcd(y,x%y); } void doit(long long fz,long long fm) { long long gcdd=abs(gcd(fz,fm)); fz/=gcdd;fm/=gcdd; if(fm==1)cout<<fz; else cout<<fz<<"/"<<fm; } int main() { freopen("uqe.in","r",stdin); freopen("uqe.out","w",stdout); cin>>t>>m; while(t--) { cin>>a>>b>>c; de=b*b-4*a*c; if(de<0)cout<<"NO"; else { long long zs=0; for(long long i=1;i*i<=de;i++) { if(de%(i*i)==0)zs=i; } if(zs*zs==de) { if(a>0) { long long fz=-b+zs,fm=2*a; doit(fz,fm); } else { long long fz=b+zs,fm=-2*a; doit(fz,fm); } } else { long long fz,fm; if(a>0) fz=-b,fm=2*a; else fz=b,fm=-2*a; if(fz!=0) { doit(fz,fm); cout<<"+"; } long long r=de/(zs*zs); if(a>0) fz=zs,fm=2*a; else fz=zs,fm=-2*a; long long gcdd=gcd(fz,fm); fz/=gcdd,fm/=gcdd; if(fm==1) { if(fz==1)cout<<"sqrt("<<r<<")"; else cout<<fz<<"*sqrt("<<r<<")"; } else if(fz==1)cout<<"sqrt("<<r<<")/"<<fm; else cout<<fz<<"*sqrt("<<r<<")/"<<fm; } } cout<<endl; } return 0; }
信息
- ID
- 1349
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 8
- 标签
- 递交数
- 17
- 已通过
- 6
- 上传者