题目链接:牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)
A:
#include<bits/stdc++.h>
using namespace std;
int a,b,c;
int main()
{
cin>>a>>b>>c;
if(min(a,b)+c>max(a,b)) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
}
B:
#include<bits/stdc++.h>
using namespace std;
int a,b,c;
int main()
{
int a[3];
cin>>a[0]>>a[1]>>a[2];
//int mn=-0x3f;
sort(a,a+3);
//for(int i=0;i<3;i++) cout<<a[i]<<endl;
cout<<max(max(a[0]+a[1]+a[2],a[0]*a[1]*a[2]),(a[1]+a[0])*a[2])<<endl;
return 0;
}
C:
#include<bits/stdc++.h>
using namespace std;
int a,b,c;
void solve()
{
cin>>a>>b>>c;
cout<<max(max(max(a*b*c,(a+b)*c),a+b+c),a*(b+c))<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t=1;
//cin>>t;
while(t--)
{
solve();
}
return 0;
}
b和c题虽然是 easy 和hard 版 但是其实暴力求组合方式就好了,区别是b题可以排序,c固定顺序
D:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b)
{
if(a!=0) return gcd(b%a,a);
return b;
}
ll a,b,c;
void solve()
{
cin>>a>>b>>c;
ll der=b*b-4*a*c;
ll s=sqrt(der);
if(der<0||s*s!=der)
{
cout<<"NO"<<endl;
return;
}
ll a1,a2;
a1=a2=2*a;
ll b1,b2;
b1=b2=-b;
b1+=s;
b2-=s;
b1=-b1;
b2=-b2;
ll mod1=gcd(a1,b1);
ll mod2=gcd(a2,b2);
a1/=mod1;
a2/=mod2;
b1/=mod1;
b2/=mod2;
int temp=a/a1/a2;
a1*=temp;
b1*=temp;
cout<<a1<<' '<<b1<<' '<<a2<<' '<<b2<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t=1;
cin>>t;
while(t--)
{
solve();
}
return 0;
}
根据求根公式求结果,gcd函数是找最大公约数,数据要开 long long 不然只有20%通过率。