第七屆湘計算機程式設計競賽的學生 報道稱,數字遊戲

2021-09-07 02:41:08 字數 1972 閱讀 4260

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:2

描寫敘述

n 個人站成一行玩乙個報數遊戲。全部人從左到右編號為 1 到 n。遊戲開始時,最左邊的人報 1。他右邊的人報 2,編號為 3 的人報 3,等等。當編號為 n 的人(即最右邊的人)報完 n 之後,輪到他左邊的人(即編號為n-1 的人)報 n+1,然後編號為 n-2 的人報 n+2。以此類推。當最左邊的人再次報數之後,報數方向又變成從左到右,依次類推。

為了防止遊戲太無聊,報數時有乙個特例:假設應該報的數包括數字 7 或者是 7 的倍數。他應當用拍手取代報數。

下表是 n=4 的報數情況(x 表示拍手)。

當編號為 3 的人第 4 次拍手的時候。他實際上數到了 35。

人12343

2123

報數123

456x

89人4

3212

3432

報數10

111213x

1516x18

人123

4321

23報數1920x

2223

242526x

人432

1234

32報數x

2930 

31 32

3334x36

給定 n,m 和 k。你的任務是計算當編號為 m 的人第 k 次拍手時,他實際上數到了幾。

輸入

輸入包括不超過 10 組資料。每組資料佔一行。包括三個整數 n,m 和 k(2<=n<=100, 1<=m<=n, 1<=k<=100)。輸入結束標誌為 n=m=k=0。

輸出對於每組資料,輸出一行。即編號為 m 的人第 k 次拍手時,他實際上數到的那個整數。

例子輸入

4 3 1 

4 3 2

4 3 3

4 3 4

0 0 0

例子輸出

17 

21 27

35

**湖南省第七屆大學生計算機程式設計競賽

一道簡單的模擬題:要模擬出現的情況,主要要推出乙個規律  在邊界的位置時,下乙個報數的位置就是 2*n-2。(我也不知道是怎麼推出來的)

這樣就能夠推算出 每乙個編號 下乙個報數的位置;直接進行推斷。

#include #include bool judge(int n)//推斷函式,推斷是否含7,或者是7的倍數

return false;

}int main()

}printf("%d\n",i);

}return 0;

}

還看到別人的還有一種思路,直接找到規律,依據規律暴力求解。

分成了兩個部分進行考慮,邊界情況就直接是2*n-2,中間的間隔是兩個數迴圈變化的。

#include #include using namespace std;

bool is7( int n )//推斷

return false;

}int main()}}

else}}

}}

return 0;

}

換一種思路。直接進行模擬,依照先順序,後倒序進行模擬;

#include #include bool judge(int n)//推斷

return false;

}int main()

}if(i==n)}}

if(flag) break;

i=1;//回溯到順序}}

}return 0;

}

山東省第七屆ACM程式設計競賽

sdutoj 3560 3570 水題 include include define mem a,x memset a,x,sizeof a using namespace std typedef long long ll const int n 100010 int a 5 int main re...

第七屆福建省大學生程式設計競賽

b 計算得分的期望 include include include include using namespace std int main return 0 e 直接根據牌的數量來計算,直接拿n 0.5就是答案。include include include define iloveu retur...

2016 第七屆福建省大學生程式設計競賽

a.b.c.題意 兩人輪流玩卡片,共n 2張,每次隨機抽一張,比較大小,贏了的話加一分勝點,求fat brother的期望勝點。思路 兩人獲勝的期望是相等的,所以直接n 2就是結果了 include include using namespace std const int n 2e4 5 int ...