Board logo

標題: 剪刀石頭布 [打印本頁]

作者: 葉桔良    時間: 2022-11-4 21:27     標題: 剪刀石頭布

本帖最後由 葉桔良 於 2022-11-11 21:03 編輯

石頭剪刀布是常見的猜拳遊戲。石頭勝剪刀,剪刀勝布,布勝石頭。如果兩個人出拳一樣,則不分勝負。

一天,小A 和小B 正好在玩石頭剪刀布。已知他們的出拳都是有周期性規律的,比如:“石頭-布-石頭-剪刀-石頭-布-石頭-剪刀……”,就是以“石頭-布-石頭-剪刀”為周期不斷循環的。請問,小A 和小B 比了N 輪之後,誰贏的輪數多?

輸入格式
輸入包含三行。

第一行包含三個整數:
N,N A,N B,分別表示比了
N 輪,小A 出拳的周期長度,小B 出拳的周期長度。0<N,N A ,N B <100。

第二行包含N A個整數,表示小A 出拳的規律。

第三行包含N B個整數,表示小B 出拳的規律。

其中,0 表示“石頭”,2 表示“剪刀”,5 表示“布”。相鄰兩個整數之間用單個空格隔開。

輸出格式
輸出一行,如果小A 贏的輪數多,輸出"A";如果小B 贏的輪數多,輸出"B";如果兩人打平,輸出“draw”。

提示
對於測試數據,猜拳過程為:
A:0 2 5 0 2 5 0 2 5 0

B:0 5 0 2 0 5 0 2 0 5

A 贏了4 輪,B 贏了2 輪,雙方打平4 輪,所以A 贏的輪數多。
[attach]14089[/attach]
作者: 葉桔良    時間: 2022-11-4 21:28

  1. #include<cstdlib>
  2. #include<iostream>   
  3. #include <algorithm>  
  4. using namespace std;
  5. int main( )
  6. {
  7.     int n,a,b,numa[105],numb[105];
  8.     cin>>n>>a>>b;
  9.     int A=0,B=0;
  10.     for(int i=0;i<a;i++)
  11.         cin>>numa[i];
  12.     for(int i=0;i<b;i++)
  13.         cin>>numb[i];
  14.     for(int i=0;i<n;i++)
  15.     {
  16.         if((numa[i%a]==0 && numb[i%b]==2)||(numa[i%a]==5 && numb[i%b]==0)||(numa[i%a]==2 && numb[i%b]==5))
  17.             A++;
  18.         else if((numb[i%b]==0 && numa[i%a]==2)||(numb[i%b]==5 && numa[i%a]==0)||( numb[i%b]==2 && numa[i%a]==5 ))
  19.             B++;
  20.     }
  21.     if(A>B)
  22.         cout<<"A"<<endl;
  23.     else if(A<B)
  24.         cout<<"B"<<endl;
  25.     else
  26.         cout<<"draw";      
  27.     system("pause") ;      
  28.     return 0;
  29. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2