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

                                                    NOIP201405生活大爆炸版石头剪刀布

    试题描述

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

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

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

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

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

    甲乙剪刀石头蜥蜴人斯波克
    剪刀
    石头 ×
    × ×
    蜥蜴人 × × ×
    斯波克 × × × ×

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

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

    输入格式

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

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

    输出格式

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

    样例一

    input

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

    output

    6 2
    
    

    样例二

    input

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

    output

    4 4


    当时刚入门,一个概念:试!
     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int a,b,c,d,e,xa[1000],xb[1000],sa=0,sb=0,x,m,n,ax,bx,y;
     6     cin>>a>>b>>c;
     7     for(d=0;d<b;d++)cin>>xa[d];
     8     for(e=0;e<c;e++)cin>>xb[e];
     9     for(m=0,x=0,y=0;m<a;m++,x++,y++)
    10     {   
    11            if(x==b)x=0;
    12         if(y==c)y=0;
    13         if(xa[x]==1&&xb[y]==0)sa++;
    14         else if(xa[x]==0&&xb[y]==1)sb++;
    15         else if(xa[x]==0&&xb[y]==2)sa++;
    16         else if(xa[x]==2&&xb[y]==0)sb++;
    17         else if(xa[x]==0&&xb[y]==3)sa++;
    18         else if(xa[x]==3&&xb[y]==0)sb++;
    19         else if(xa[x]==4&&xb[y]==0)sa++;
    20         else if(xa[x]==0&&xb[y]==4)sb++;
    21         else if(xa[x]==2&&xb[y]==1)sa++;
    22         else if(xa[x]==1&&xb[y]==2)sb++;
    23         else if(xa[x]==1&&xb[y]==3)sa++;
    24         else if(xa[x]==3&&xb[y]==1)sb++;
    25         else if(xa[x]==4&&xb[y]==1)sa++;
    26         else if(xa[x]==1&&xb[y]==4)sb++;
    27         else if(xa[x]==3&&xb[y]==2)sa++;
    28         else if(xa[x]==2&&xb[y]==3)sb++;
    29         else if(xa[x]==2&&xb[y]==4)sa++;
    30         else if(xa[x]==4&&xb[y]==2)sb++;
    31         else if(xa[x]==3&&xb[y]==4)sa++;
    32         else if(xa[x]==4&&xb[y]==3)sb++;
    33         
    34     }
    35     cout<<sa<<" "<<sb;
    36 }
    View Code
    你——悟到了么?
  • 相关阅读:
    【数据结构】线性表&&顺序表详解和代码实例
    【智能算法】超详细的遗传算法(Genetic Algorithm)解析和TSP求解代码详解
    【智能算法】用模拟退火(SA, Simulated Annealing)算法解决旅行商问题 (TSP, Traveling Salesman Problem)
    【智能算法】迭代局部搜索(Iterated Local Search, ILS)详解
    10. js时间格式转换
    2. 解决svn working copy locked问题
    1. easyui tree 初始化的两种方式
    10. js截取最后一个斜杠后面的字符串
    2. apache整合tomcat部署集群
    1. apache如何启动
  • 原文地址:https://www.cnblogs.com/wxjor/p/5444321.html
Copyright © 2011-2022 走看看