石頭剪刀布

2022-10-10 05:36:06 字數 1689 閱讀 1245

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

一天,小a和小b正好在玩石頭剪刀布。已知他們的出拳都是有週期性規律的,比如:「石頭-布-石頭-剪刀-石頭-布-石頭-剪刀……」,就是以「石頭-布-石頭-剪刀」為週期不斷迴圈的。請問,小a和小b比了n輪之後,誰贏的輪數多?

輸入

輸入包含三行。

第一行包含三個整數:n,na,nb,分別表示比了n輪,小a出拳的週期長度,小b出拳的週期長度。0 < n,na,nb < 100。

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

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

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

輸出

輸出一行,如果小a贏的輪數多,輸出a;如果小b贏的輪數多,輸出b;如果兩人打平,輸出draw。

樣例輸入

10 3 4

0 2 5

0 5 0 2

樣例輸出
a
提示

對於測試資料,猜拳過程為:

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贏的輪數多。

題意

題目給出了他們一共比了多少回,小a出拳的週期長度與小b出拳的週期長度,計算出誰贏的輪數多。

解題思路

先用第一、二個for輸入小a和小b的出拳週期,再用第

三、四個for保障一直重複迴圈小a和小b的出拳週期,然後用if判斷小a和小b贏得可能性,最後用if和else判斷小a贏了還是小b贏了。

int n,na,nb,a[110],b[110],sum1=0,sum2=0;

cin>>n>>na>>nb;

for(int i=0;i;i++)

for(int j=0;j;j++)

for(int i=na;i;i++)

for(int j=nb;j;j++)

for(int i=0;i;i++)

else if((b[i]==0&&a[i]==2)||(b[i]==2&&a[i]==5)||(b[i]==5&&a[i]==0))

} if(sum1>sum2)

if(sum1)

else

return 0;

}

錯誤分析

#includeusing namespace std;

int main()

for(int j=1;j<=nb;j++)

//錯誤原因:沒有保障一直重複迴圈小a與小b的出拳週期。for(int i=1;i<=n;i++)

else if((b[i]==0&&a[i]==2)||(b[i]==2&&a[i]==5)||(b[i]==5&&a[i]==0))

} if(sum1>sum2)

if(sum1)

else

return 0;

}

剪刀石頭布

開始學習時寫的剪刀石頭布 雖然是用c 寫的 我感覺思想還是面向過程 慚愧慚愧 include include include include includeusing namespace std enum caiquan class inte cet inte cet inte cet system...

石頭剪刀布

題目描述 石頭剪刀布是常見的猜拳遊戲 石頭勝剪刀,剪刀勝布,布勝石頭。如果兩個人出拳一樣,則不分勝負。在 生活大 第二季第 8 集中出現了一種石頭剪刀布的公升級版遊戲。公升級版遊戲在傳統的石頭剪刀布遊戲的基礎上,增加了兩個新手勢 斯波克 星際迷航 主角之一。蜥蜴人 星際迷航 中的反面角色。這五種手勢...

剪刀石頭布

現在一共有 n個人 分別記為 1,2,n 在玩剪刀石頭布,如果知道他們每個人都出了什麼,你能找出來誰是 winner嗎?當且僅當乙個人可以贏其他所有人時,才稱這個人是 winner。我們將剪刀記作 2,石頭記作 0,布記作 5,那麼勝負關係就應當是2能贏 5,5能贏 0,0能贏 2。input 輸入...