NOIP2014 提高组 复赛 day1 rps 生活大爆炸版石头剪刀布

来源:互联网 发布:python split去除空格 编辑:程序博客网 时间:2024/05/12 04:13

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);
}


0 0
原创粉丝点击