NOIP2014 提高组 复赛 day1 rps 生活大爆炸版石头剪刀布
1.题目很快看懂,开一个二维数组(存储二维表信息),赢1,平0,输-1。得分根据结果再处理。
2.周期可以用%很快搞定。
3.题目展示数据量不大,结果开个300*300的数组即可,a,b各开300。
4.为了检查方便,对结果数据一个一个进行初始化,虽然代码敲了些时间,但是检查起来挺方便的。
5.编程时间与调试时间差不多,有一个地方有所疏忽:r[a[i]][b[j]];写成r[i][j],调了会。两个样例通过后,提交AC。
耗时:30分钟
难度:简单附上AC代码,编译环境Dev-C++4.9.9.2
//2014 rps
#include <stdio.h>
#include <string.h>
int r[300][300];
int a[300],b[300];
int main(){
int i,j,k;
int ans_a=0,ans_b=0;
int n,na,nb;
memset(r,0,sizeof(r));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
r[0][1]=-1;
r[1][0]=1;
r[0][2]=1;
r[2][0]=-1;
r[0][3]=1;
r[3][0]=-1;
r[0][4]=-1;
r[4][0]=1;
r[1][2]=-1;
r[2][1]=1;
r[1][3]=1;
r[3][1]=-1;
r[1][4]=-1;
r[4][1]=1;
r[2][3]=-1;
r[3][2]=1;
r[2][4]=1;
r[4][2]=-1;
r[3][4]=1;
r[4][3]=-1;
scanf("%d%d%d",&n,&na,&nb);
for(i=0;i<na;i++)
scanf("%d",&a[i]);
for(i=0;i<nb;i++)
scanf("%d",&b[i]);
for(k=0;k<n;k++){
i=k%na;
j=k%nb;
if(r[a[i]][b[j]]==1)
ans_a++;
else if(r[a[i]][b[j]]==-1)
ans_b++;
}
printf("%d %d\n",ans_a,ans_b);
}