[NOIP2014 提高组] 生活大爆炸版石头剪刀布#洛谷

题目背景

NOIP2014 提高组 D1T1

题目描述

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

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

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

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

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

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

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

输入格式

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

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

输出格式

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

样例 #1

样例输入 #1

10 5 6
0 1 2 3 4
0 3 4 2 1 0

样例输出 #1

6 2

样例 #2

样例输入 #2

9 5 5
0 1 2 3 4
1 0 3 2 4

样例输出 #2

4 4

提示

对于 100 % 100\% 100% 的数据, 0 < N ≤ 200 , 0 < N A ≤ 200 , 0 < N B ≤ 200 0 < N \leq 200, 0 < N_A \leq 200, 0 < N_B \leq 200 0<N200,0<NA200,0<NB200

def judge(a,b):
    if a==b:
        return 0
    else:
        if a == 0:
            if b == 2 or b == 3:
                return 1
            else:
                return 2
            pass
        elif a == 1:
            if b == 0 or b == 3:
                return 1
            else:
                return 2
            pass
        elif a == 2:
            if b == 1 or b == 4:
                return 1
            else:
                return 2
            pass
        elif a == 3:
            if b == 2 or b == 4:
                return 1
            else:
                return 2
            pass
        elif a == 4:
            if b == 0 or b == 1:
                return 1
            else:
                return 2



if __name__=="__main__":
    n, na, nb = map(int, input().split())
    mapp_a = input()
    mapp_a = [int(item) for item in mapp_a.split()]
    mapp_b = input()
    mapp_b = [int(item) for item in mapp_b.split()]
    step_a = 0
    step_b = 0
    summ_a = 0
    summ_b = 0
    while n > 0:
        n -= 1
        key = judge(mapp_a[step_a], mapp_b[step_b])
        if key == 1:
            summ_a += 1
            pass
        if key == 2:
            summ_b += 1
            pass
        step_a += 1
        if step_a >= na:
            step_a -= na
            pass
        step_b += 1
        if step_b >= nb:
            step_b -= nb
    print(summ_a, summ_b)

不难,就是表格难看,建议把表格补齐了再看,然后细心点就行,再就是耐心点

相关推荐

  1. [NOIP2014 提高] 生活爆炸石头剪刀

    2024-01-07 10:10:03       80 阅读
  2. 【全网首发】P2678 [NOIP2015 提高] 跳石头

    2024-01-07 10:10:03       59 阅读
  3. P1541 [NOIP2010 提高] 乌龟棋

    2024-01-07 10:10:03       41 阅读
  4. P1011 [NOIP1998 提高] 车站

    2024-01-07 10:10:03       41 阅读
  5. P2678 [NOIP2015 提高] 跳石头

    2024-01-07 10:10:03       39 阅读
  6. P2678 [NOIP2015 提高] 跳石头

    2024-01-07 10:10:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-07 10:10:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-07 10:10:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-07 10:10:03       87 阅读
  4. Python语言-面向对象

    2024-01-07 10:10:03       96 阅读

热门阅读

  1. 【js逆向】爬虫之进程,线程,协程

    2024-01-07 10:10:03       55 阅读
  2. 【笔记】Mac M1上miniforge3与tushare的安装

    2024-01-07 10:10:03       79 阅读
  3. Nodejs搭配axios下载图片

    2024-01-07 10:10:03       64 阅读
  4. SQL优化:条件提升

    2024-01-07 10:10:03       75 阅读
  5. Linux 进程管理

    2024-01-07 10:10:03       46 阅读
  6. K8S学习指南(62)-K8S源代码走读之Kube-Scheduler

    2024-01-07 10:10:03       71 阅读
  7. 纯虚函数和抽象类(C++)

    2024-01-07 10:10:03       62 阅读
  8. Binius:基于binary fields的SNARKs(Part 2)

    2024-01-07 10:10:03       72 阅读
  9. DOCKER镜像

    2024-01-07 10:10:03       59 阅读
  10. EF Core实体的五种不同的状态

    2024-01-07 10:10:03       81 阅读
  11. uniapp分包

    2024-01-07 10:10:03       54 阅读
  12. npm配置文件 .npmrc 加载优先级和使用示例

    2024-01-07 10:10:03       59 阅读