ccf报数游戏java,CCF 201712-2 游戏 《超越自我,攀登顶峰》
試題編號(hào): 201712-2
試題名稱: 游戲
時(shí)間限制: 1.0s
內(nèi)存限制: 256.0MB
問題描述
有n個(gè)小朋友圍成一圈玩游戲,小朋友從1至n編號(hào),2號(hào)小朋友坐在1號(hào)小朋友的順時(shí)針方向,3號(hào)小朋友坐在2號(hào)小朋友的順時(shí)針方向,……,1號(hào)小朋友坐在n號(hào)小朋友的順時(shí)針方向。
游戲開始,從1號(hào)小朋友開始順時(shí)針報(bào)數(shù),接下來每個(gè)小朋友的報(bào)數(shù)是上一個(gè)小朋友報(bào)的數(shù)加1。若一個(gè)小朋友報(bào)的數(shù)為k的倍數(shù)或其末位數(shù)(即數(shù)的個(gè)位)為k,則該小朋友被淘汰出局,不再參加以后的報(bào)數(shù)。當(dāng)游戲中只剩下一個(gè)小朋友時(shí),該小朋友獲勝。
例如,當(dāng)n=5, k=2時(shí):
1號(hào)小朋友報(bào)數(shù)1;
2號(hào)小朋友報(bào)數(shù)2淘汰;
3號(hào)小朋友報(bào)數(shù)3;
4號(hào)小朋友報(bào)數(shù)4淘汰;
5號(hào)小朋友報(bào)數(shù)5;
1號(hào)小朋友報(bào)數(shù)6淘汰;
3號(hào)小朋友報(bào)數(shù)7;
5號(hào)小朋友報(bào)數(shù)8淘汰;
3號(hào)小朋友獲勝。
給定n和k,請(qǐng)問最后獲勝的小朋友編號(hào)為多少?
輸入格式
輸入一行,包括兩個(gè)整數(shù)n和k,意義如題目所述。
輸出格式
輸出一行,包含一個(gè)整數(shù),表示獲勝的小朋友編號(hào)。
樣例輸入
5 2
樣例輸出
3
樣例輸入
7 3
樣例輸出
4
數(shù)據(jù)規(guī)模和約定
對(duì)于所有評(píng)測(cè)用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。
#include
#define _for(i, a, b) for (int i = a; i < b; i++)
using namespace std;
int main()
{
int n, k; //小朋友的個(gè)數(shù)n,數(shù)k
cin >> n >> k;
int play[1001] = {0};
int count = 0;
int survive = n;
while (survive > 1) //當(dāng)有游戲還有兩人進(jìn)行時(shí),游戲繼續(xù)
{
_for(i, 0, n) //游戲在5個(gè)人中循環(huán)
{
count++; //計(jì)數(shù)器
if (count % k == 0 || count % 10 == k) //判斷是否為k的倍數(shù)或末尾含k
{
while (play[i] == -1) i = (i + 1) % n; //按順序找到下一個(gè)還未出局者,令他出局
play[i] = -1;
survive--;
if (survive == 1) break;
}
else if (play[i] == -1) //雖然不含k的倍數(shù)或末尾含k,但是該參與者在此前已經(jīng)出局
while (play[i] == -1) i = (i + 1) % n; //按順序找到下一個(gè)還未出局者
}
}
_for(i, 0, n) if (play[i] == 0) cout << i + 1 << endl;
//system("pause");
return 0;
}
這個(gè)題一開始把
這部分錯(cuò)寫成i=i%n+1;才導(dǎo)致得分只有10分,不過令人驚奇的是,就這樣錯(cuò)了,運(yùn)行的時(shí)候還是正確的,這錯(cuò)誤隱藏的實(shí)力我給滿分!最后在調(diào)試的時(shí)候發(fā)現(xiàn)了錯(cuò)誤。我寫的優(yōu)勢(shì)是不用單獨(dú)判斷k=1時(shí)的特殊情況。因?yàn)槲医o復(fù)值的時(shí)候就是按順序從左到右的。
亮點(diǎn):while (play[i] == -1) i = (i+1)% n;
希望你們學(xué)會(huì)哦!
如果這個(gè)題可以用環(huán)形鏈表,應(yīng)該可以更快,直接刪掉多余節(jié)點(diǎn)就行。
總結(jié)
以上是生活随笔為你收集整理的ccf报数游戏java,CCF 201712-2 游戏 《超越自我,攀登顶峰》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5.7.20mysql修改密码,ubun
- 下一篇: php 获取坐标api,怎么获取百度坐标