zoukankan      html  css  js  c++  java
  • 生活大爆炸版石头剪刀布

    生活大爆炸版石头剪刀布

          #本试题洛谷均可找到#



    1、生活大爆炸版石头剪刀布

    时空限制1000ms / 128MB

    题目描述

    石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第8 集中出现了一种石头剪刀布的升级版游戏。

    升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:

    斯波克:《星际迷航》主角之一。

    蜥蜴人:《星际迷航》中的反面角色。

    这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。

     

    现在,小A 和小B 尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有周期性规律的,但周期长度不一定相等。例如:如果小 A以“石头 - 布- 石头- 剪刀- 蜥蜴人- 斯波克”长度为6 的周期出拳,那么他的出拳序列就是“石头- 布- 石头- 剪刀- 蜥蜴人- 斯波克- 石头- 布- 石头- 剪刀- 蜥蜴人- 斯波克- ……”,而如果小B 以“剪刀- 石头- 布- 斯波克- 蜥蜴人”长度为5 的周期出拳,那么他出拳的序列就是“剪刀- 石头- 布- 斯波克- 蜥蜴人- 剪刀- 石头- 布-斯波克- 蜥蜴人- ……”

    已知小A 和小B 一共进行N 次猜拳。每一次赢的人得1 分,输的得0 分;平局两人都得0 分。现请你统计N 次猜拳结束之后两人的得分。

    输入输出格式

    输入格式:

    输入文件名为rps.in。

    第一行包含三个整数:N ,NA,NB,分别表示共进行 N 次猜拳、小 A 出拳的周期长度,小B 出拳的周期长度。数与数之间以一个空格分隔。

    第二行包含NA个整数,表示小 A 出拳的规律,第三行包含NB个整数,表示小 B 出拳的规律。其中,0 表示“剪刀”,1 表示“石头”,2 表示“布”,3 表示“蜥蜴人”, 4 表示“斯波克”。数与数之间以一个空格分隔。

    输出格式:

    输出文件名为rps.out 。

    输出一行, 包含两个整数,以一个空格分隔,分别表示小A 、小B 的得分。

    输入输出样例

    输入样例#1 

    10 5 6

    0 1 2 3 4

    0 3 4 2 1 0

    输出样例#1 

    6 2

     

    说明

    对于100%的数据,0 < N ≤ 200 ,0 < NA ≤ 200 , 0 < NB ≤ 200 。



     



    这题day1 第一题

    没啥可说的 ,if多点

     


    #include<cstdio>
    #define maxn 300
    using namespace std;
    int n,na,nb;
    int a[maxn],b[maxn],ansa,ansb;
    int main()
    {
        //freopen("rps.in","r",stdin);
        //freopen("rps.out","w"stdout);
        scanf("%d%d%d",&n,&na,&nb);//读入n,na,nb
        for(int i=1;i<=na;++i)
            scanf("%d",&a[i]);//分别读入a和b的顺序
        for(int i=1;i<=nb;++i)
            scanf("%d",&b[i]);
        a[0]=a[na];//这里把a,b的最后一个元素放到0号元素中
        b[0]=b[nb];//上面题解已经提到
        for(int i=1;i<=n;++i)
        {
            if(a[i%na]==0&&(b[i%nb]==2||b[i%nb]==3)) {ansa++;continue;}//判断a能赢的可能情况,如果成立,
            if(a[i%na]==1&&(b[i%nb]==0||b[i%nb]==3)) {ansa++;continue;}//ans++ continue
            if(a[i%na]==2&&(b[i%nb]==1||b[i%nb]==4)) {ansa++;continue;}//if可以写成2个或者20个
            if(a[i%na]==3&&(b[i%nb]==2||b[i%nb]==4)) {ansa++;continue;}//如果不别扭的话
            if(a[i%na]==4&&(b[i%nb]==0||b[i%nb]==1)) {ansa++;continue;}
            
            if(b[i%nb]==0&&(a[i%na]==2||a[i%na]==3)) {ansb++;continue;}//同上
            if(b[i%nb]==1&&(a[i%na]==0||a[i%na]==3)) {ansb++;continue;}
            if(b[i%nb]==2&&(a[i%na]==1||a[i%na]==4)) {ansb++;continue;}
            if(b[i%nb]==3&&(a[i%na]==2||a[i%na]==4)) {ansb++;continue;}
            if(b[i%nb]==4&&(a[i%na]==0||a[i%na]==1)) {ansb++;continue;}
        }
        printf("%d %d",ansa,ansb);//直接输出就可以了 
        return 0;    
    } 

  • 相关阅读:
    sublime text 4 vim 插件配置
    ssh-keygen 的使用
    distribution transaction solution
    bilibili 大数据 视频下载 you-get
    Deepin 20.2.1 安装 MS SQL 2019 容器版本
    【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库
    【转】You Can Now Use OneDrive in Linux Natively Thanks to Insync
    dotnet 诊断工具安装命令
    Linux 使用 xrandr 设置屏幕分辨率
    【转】CentOS 7.9 2009 ISO 官方原版镜像下载
  • 原文地址:https://www.cnblogs.com/dsrdsr/p/8903089.html
Copyright © 2011-2022 走看看