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

    题目描述

    石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第 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 的得分。


    样例输入

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


    样例输出

    6 2


    题解

    模拟水水水题。

    #include<iostream>
    #include<cstdlib>
    #include<cstdio>
    #include<cmath>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define ll long long
    
    int n,na,nb,sa=0,sb=0,gong,j=-1,k=-1;
    char a[210],b[210];
    
    void work(char x,char y){
        if(x=='0'){
            if(y=='2'||y=='3') sa++;
            if(y=='1'||y=='4') sb++;
        }
        if(x=='1'){
            if(y=='0'||y=='3') sa++;
            if(y=='2'||y=='4') sb++;
        }
        if(x=='2'){
            if(y=='4'||y=='1') sa++;
            if(y=='0'||y=='3') sb++;
        }
        if(x=='3'){
            if(y=='4'||y=='2') sa++;
            if(y=='1'||y=='0') sb++;
        }
        if(x=='4'){
            if(y=='0'||y=='1') sa++;
            if(y=='2'||y=='3') sb++;
        }
    }
    
    int main(){
        cin>>n>>na>>nb;
        for(int i=0;i<na;i++)
        cin>>a[i];
        for(int i=0;i<nb;i++)
        cin>>b[i];
        for(int i=0;i<n;i++){
            j++;k++;
            if(j==na) j=0;
            if(k==nb) k=0;
            work(a[j],b[k]); 
        }
        cout<<sa<<" "<<sb;
        return 0;
    }
  • 相关阅读:
    WCF Server Console
    Restart IIS With Powershell
    RestartService (recursively)
    Copy Files
    Stopping and Starting Dependent Services
    多线程同步控制 ManualResetEvent AutoResetEvent MSDN
    DTD 简介
    Using Powershell to Copy Files to Remote Computers
    Starting and Stopping Services (IIS 6.0)
    java中的NAN和INFINITY
  • 原文地址:https://www.cnblogs.com/rlddd/p/9513511.html
Copyright © 2011-2022 走看看