第一题:first
第二题:chengji
打擂台,每个数跟当前最大、最小值比较,维护当前最值即可。
#include<bits/stdc++.h>
using ll=long long;
using namespace std;
const int N=1e6+10;
int n;
int x;//1e9, ll最大9e18
ll maxn=0,minn=INT_MAX;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x;
maxn=max(maxn,x);
minn=min(minn,x);
}
cout<<maxn*minn;
return 0;
}
第三题:nmji
枚举公鸡,母鸡数量即可,列式子求小鸡个数。
#include<bits/stdc++.h>
using ll=long long;
using namespace std;
const int N=1e6+10;
int n,m;//n钱买m鸡
//鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一
//5e4
int main()
{
cin>>n>>m;
for(int i=0;i<=m;i++)//枚举鸡翁数量
{
for(int j=0;j<=min(m-i,(n-i*5)/3);j++)//枚举母鸡数量
{
int mon=n-i*5-j*3;//剩余钱数
if((i+j+mon*3)==m)
{
std::cout<<i<<" "<<j<<" "<<mon*3<<'\n';
}
}
}
return 0;
}
第四题:fangge
方形由横竖分别两条直线围成,从横着的线中选2条,竖着的线中选2条,两者方案数相乘得到答案。
#include<bits/stdc++.h>
using ll=long long;
using namespace std;
const int N=1e6+10;
int n,m;
ll c2(int n)
{
return (ll)n*(n-1)/2;
}
int main()
{
cin>>n>>m;
n+=2,m+=2;
cout<<c2(n)*c2(m);
return 0;
}
第五题:sizhishu
约数一定是成对出现的,枚举前一半约数,特判a*a=b的情况即可。
#include<bits/stdc++.h>
using ll=long long;
using namespace std;
const int N=1e6+10;
int n,m;//1e6
bool check(int x)
{
ll cnt=2;
for(int i=2;i<=x/i;i++)
{
if(x%i==0)
{
if(x/i!=i) cnt+=2;
else return 0;
}
}
return cnt==4;
}
int main()
{
//四质数就是有且只有四个因数的数
cin>>n>>m;
for(int i=n;i<=m;i++)//5e4
{
if(check(i))
{
cout<<i<<'\n';
}
}
return 0;
}