社区讨论
救我,我让我几个同学都关注您
灌水区参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @loa4708e
- 此快照首次捕获于
- 2023/10/28 22:05 2 年前
- 此快照最后确认于
- 2023/11/02 10:59 2 年前
2023 CSP-J T3求调!!!
CPP#include<bits/stdc++.h>
using namespace std;
int T,a,b,c,delta,m,bc,s;
bool nah;
void hj(int x,int y)
{
// cout<<"youlishu:";
int flag=0;
if(x<0)flag++;
if(y<0)flag++;
if(flag%2==1)
{
cout<<"-";
}
x=abs(x);
y=abs(y);
if(x==y)
{
cout<<1;
return ;
}
vector<int> ys;
int i=2;
for(;i*i<x;i++)
{
if(x%i==0)
{
ys.push_back(i);
ys.push_back(x/i);
}
}
if(x%(i*i)==0)
{
ys.push_back(i);
}
sort(ys.begin(),ys.end());
// for(i=0;i<ys.size();i++)
// {
// cout<<ys[i]<<" ";
// }
if(!ys.empty())
while(x>=ys.front()&&y>=ys.front()&&!ys.empty())
{
while(y%ys.front()==0&&x%ys.front()==0)
{
x=x/ys.front();
y=y/ys.front();
}
ys.erase(ys.begin());
}
if(x==0)cout<<0;
else if(y==1)cout<<x;
else cout<<x<<"/"<<y;
}
void hj2(int x,int y)
{
// cout<<"youlishu:";
int flag=0;
if(x<0)flag++;
if(y<0)flag++;
if(flag%2==1)
{
cout<<"-";
}
x=abs(x);
y=abs(y);
if(x==y)
{
cout<<1;
return ;
}
vector<int> ys;
int i=2;
for(;i*i<x;i++)
{
if(x%i==0)
{
ys.push_back(i);
ys.push_back(x/i);
}
}
if(x%(i*i)==0)
{
ys.push_back(i);
}
sort(ys.begin(),ys.end());
// for(i=0;i<ys.size();i++)
// {
// cout<<ys[i]<<" ";
// }
if(!ys.empty())
while(x>=ys.front()&&y>=ys.front()&&!ys.empty())
{
while(y%ys.front()==0&&x%ys.front()==0)
{
x=x/ys.front();
y=y/ys.front();
}
ys.erase(ys.begin());
}
if(x==0)
{
nah=1;
return ;
}
else if(y==1)cout<<x;
else cout<<x<<"/"<<y;
}
void hj3(int x,int del,int y)
{
// cout<<"youlishu:";
int flag=0;
if(x<0)flag++;
if(y<0)flag++;
if(flag%2==1)
{
cout<<"-";
}
x=abs(x);
y=abs(y);
if(x==y)
{
cout<<1;
return ;
}
vector<int> ys;
int i=2;
for(;i*i<x;i++)
{
if(x%i==0)
{
ys.push_back(i);
ys.push_back(x/i);
}
}
if(x%(i*i)==0)
{
ys.push_back(i);
}
sort(ys.begin(),ys.end());
// for(i=0;i<ys.size();i++)
// {
// cout<<ys[i]<<" ";
// }
if(!ys.empty())
while(x>=ys.front()&&y>=ys.front()&&!ys.empty())
{
while(y%ys.front()==0&&x%ys.front()==0)
{
x=x/ys.front();
y=y/ys.front();
}
ys.erase(ys.begin());
}
if(x==0)cout<<"\b";
else if(x==1)cout<<"sqrt("<<del<<")"<<"/"<<y;
else if(y==1)cout<<x<<"*sqrt("<<del<<")";
else cout<<x<<"*sqrt("<<del<<")/"<<y;
}
int main()
{
cin>>T>>m;
while(T--)
{
cin>>a>>b>>c;
delta=b*b-4*a*c;
if(delta<0)
{
cout<<"NO\n";
continue;
}
else
{
int dou=1,csq=2;
// cout<<"delta"<<":\n"<<delta<<"\n";
if(delta==0)
{
dou=-1;
}
else
{
while(csq*csq<=delta)
{
while(delta%(csq*csq)==0)
{
delta=delta/(csq*csq);
dou=dou*csq;
}
csq++;
}
}
if(delta==1||delta==0)
{
if(delta==0)
{
bc=-b;
}
else if(2*a<0)
{
bc=-b-dou;
}
else
{
bc=-b+dou;
}
hj(bc,2*a);
cout<<"\n";
}
else
{
bc=-b;
nah=0;
hj2(bc,2*a);
if(nah==0)cout<<"+";
hj3(bc,delta,2*a);
cout<<"\n";
}
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...