描述石頭剪刀布是常見的猜拳遊戲。石頭勝剪刀,剪刀勝布,布勝石頭。如果兩個人出拳一樣,則不分勝負。
一天,小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 輸入...