第一题
分析
水题一道,输入两个字符串,将它们转换为数字并同时相乘,然后判断一下它们是不是对于47同余就可以了。
代码
#include<bits/stdc++.h>
using namespace std;
int i,l,a=,b=;
string s;
int main(){
cin>>s; l=s.size();
for(i=;i<l;i++)
a*=(s[i]-);
cin>>s; l=s.size();
for(i=;i<l;i++)
b*=(s[i]-);
if(a%==b%)
puts("GO");
else puts("STAY");
return ;
}
第二题
分析
在输入时,我们把给出的钱与退还给送礼者的钱计算出来,累加在每个人账户上,最后输出每个人账户的盈亏值即可。
有个小坑点:一件礼物可能送给0个人。
代码
#include<bits/stdc++.h>
using namespace std;
int n,i,j,k,m,a,money[];
string name[],s,q;
int number(string s){
int f=;
for(k=;k<=n;k++)
if(s==name[k])
f=k;
return f;
}
int main(){
scanf("%d\n",&n);
for(i=;i<=n;i++)
cin>>name[i];
for(i=;i<=n;i++){
cin>>q>>a>>m;
int x,y;
if(m==)
continue;
x=a/m,y=x*m;
money[number(q)]-=y;
for(j=;j<=m;j++){
int f;
cin>>s;
money[number(s)]+=x;
}
}
for(i=;i<=n;i++)
cout<<name[i]<<" "<<money[i]<<endl;
return ;
}
第三题
分析
又是一道水题,只要把年份枚举一遍,加上判断闰年,直接AC。
代码
#include<bits/stdc++.h>
using namespace std;
int i,j,k,n,day=,d[],m[]={,,,,,,,,,,,,};
int main()
{ scanf("%d",&n);
for(i=;i<=+n;i++)
for(j=;j<=;j++){
if((i%&&i%==)||i%==)
m[]=;
else m[]=;
for(k=;k<=m[j];k++,day++)
if(k==)
d[day%]++;
}
printf("%d",d[]);
for(i=;i<=;i++)
printf(" %d",d[i]);
return ;
}
第四题
分析
没错,本蒟蒻竟然卡在这一题上,Training Section 2.3都过了,被这题难住了,写了几遍dfs没写出来,过了很久重新写一遍,一遍过。
枚举加搜索可以过,但是要细心。
代码
#include<bits/stdc++.h>
using namespace std;
int i,j,k,m,n,ans;
string s;
int next(int x){
return x==n-? :x+;
}
int before(int x){
return x==? n-:x-;
}
int main(){
scanf("%d",&n);
cin>>s;
for(i=;i<n;i++){
int res=,color=s[i];
for(j=i;res<n;j=next(j)){
if(s[j]!=color){
if(color=='w')
color=s[j];
else if(s[j]!='w')
break;
}
res++;
}
color=s[before(i)];
for(j=before(i);res<n;j=before(j)){
if(s[j]!=color){
if(color=='w')
color=s[j];
else if(s[j]!='w')
break;
}
res++;
}
ans=max(ans,res);
}
printf("%d\n",ans);
return ;
}