A:
原题:Happy Birthday!

本题其实很水,只需要输入 这两个整数,如果 中有一个大于 ,就输出“:(”,否则输出“Yay!”。

#include<bits/stdc++.h>
using namespace std;
int A,B;
signed main()
{
scanf("%d%d",&A,&B);
if(A>8 || B>8)
{
printf(":(\n");
}
else
{
printf("Yay!\n");
}
return 0;
}
?B:

原题:?Ringo's Favorite Numbers
本题其实也不难,就是有坑。。。
如果 , 就要变成 !!!
为什么呢?
如果有100这个因子,就不能正好被100整除D次了!!!
所以,如果N=100,就要看成101来计算!!!
剩下的答案就是

#include<bits/stdc++.h>
using namespace std;
int ans;
signed main()
{
int d,n;
scanf("%d%d",&d,&n);
if(d==0 && n<100)ans=n;
if(d==0 && n==100)ans=n+1;
if(d==1 && n<100)ans=n*100;
if(d==1 && n==100)ans=(n+1)*100;
if(d==2 && n<100)ans=n*10000;
if(d==2 && n==100)ans=(n+1)*10000;
printf("%d\n",ans);
return 0;
}
C:

本题是这里最水的了。。。
现将每一个数分解质因数,取2的指数之和即可。
?
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+5;
const int maxa=1e9+5;
int n,a[maxn];
inline int lg(int x)
{
if(x%2!=0)return 0;
int ans=0;
while(true)
{
if(x%2!=0)return ans;
x/=2;
ans++;
}
}
int ans;
signed main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
ans+=lg(a[i]);
}
printf("%d\n",ans);
return 0;
}
D:

写一个暴力+排序就行。
思路见代码(通俗易懂):
#include<bits/stdc++.h>
#define int long long
using namespace std;
const long long inf=0x3f3f3f3f3f3f3f3f;
const int maxn=1e3+5;
inline long long read()
{
long long x=0,f=1;
char c=getchar();
while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
while(isdigit(c)){x=x*10+c-48;c=getchar();}
return x*f;
}
struct number
{
long long a,b,c;
}nm[maxn];
int cnt1,cnt2,cnt3;
bool cmp(number x,number y)
{
return x.a*cnt1+x.b*cnt2+x.c*cnt3>y.a*cnt1+y.b*cnt2+y.c*cnt3;
}
signed main()
{
long long n,m;
n=read();
m=read();
for(long long i=1;i<=n;i++)
{
nm[i].a=read();
nm[i].b=read();
nm[i].c=read();
}
long long ans=-inf;
for(cnt1=-1;cnt1<=1;cnt1=cnt1==-1?1:3)
{
for(cnt2=-1;cnt2<=1;cnt2=cnt2==-1?1:3)
{
for(cnt3=-1;cnt3<=1;cnt3=cnt3==-1?1:3)
{
if(cnt3==3)break;
sort(nm+1,nm+1+n,cmp);
int tot1=0,tot2=0,tot3=0;
for(int i=1;i<=m;i++)
{
tot1+=nm[i].a;
tot2+=nm[i].b;
tot3+=nm[i].c;
}
ans=max(ans,(long long)cnt1*tot1+cnt2*tot2+cnt3*tot3);
}
if(cnt2==3)break;
}
if(cnt1==3)break;
}
printf("%lld\n",ans);
return 0;
}
|