智力題 1 誰請客?

2021-06-19 05:56:16 字數 1445 閱讀 7718

description

tom和jerry是好朋友,他們倆打算玩乙個遊戲來決定誰請客吃飯,輸的人將付飯錢。

遊戲規則如下:

給定n和k,tom和jerry輪流說數字(jerry先說,且說的第乙個數字t,要求 1<=t<=k )。

假定前乙個人說的數字為x,當前這個人說的數字為y,要求 1<=y-x<=k ,如此迴圈往復。

最先說出不小於 n 的數的人即為敗者。

假定兩人都很聰明,都將採取最優策略,你能告訴我誰將付飯錢麼?

input

輸入有多組資料 每組有兩個數字n(0output

輸出要付飯錢的人「tom」或者「jerry」

sample input

1 130 3

10 2

0 0sample output

jerry

tomjerry

分析:先看一些簡單的情況:(n=x後面的括號為敗者,即輸出結果)

(1)k=1時:n=1(

jerry

),n=2(tom),n=3(

jerry

),n=4(tom)...n=奇數(jerry),n=偶數(tom)

(2)k=2時:n=1(jerry),n=2(tom),n=3(

tom),n=4(jerry),n=5(tom),n=6(

tom),n=7(

jerry

)(3)k=3時:n=1(jerry),

n=2(tom),n=3(

tom),n=4(tom),n=5(jerry),n=6(tom),n=7(tom),n=8(tom),n=9(jerry)

從上面我們能發現一點小規律,n=1時,jerry一定會輸,隨著n的增大,接下來的k個數,都是tom輸,然後又出現乙個jerry輸,然後接下來的k個數,又是tom輸...

那這個規律是否就是一般的規律呢?我們詳細分析一下:定義輸出結果為f(n,k),比如f(1,1)=jerry,f(1,2)=tom......對一般的情況,n=1時,不管k為何值,f(1,k)=jerry;當11f(n,k)=tom;當n=k+2時,如果jerry說的數字為t,則tom只要說的數字為n-1(滿足1<=(n-1)-t<=k),則jerry一定輸,即n=k+2時,f(n,k)=jerry;當k+2k+2

綜上可得,

當n%(k+1)=1時,jerry一定輸,其他情況下,一定是tom輸。

**如下:

#include using namespace std;

int main()

{ long long n,k;

while(cin>>n>>k)

{if(n==0&&k==0)

break;

if(n%(k+1)==1)

cout<<"jerry"<

求職面試 智力題 智力題彙總

25匹馬 5個跑道 找top3,要多少次比賽 top3 推廣 找top5 解答 最後拿完對局 請設計乙個遊戲 地面上擺放著若干顆石子,甲乙兩人輪流從中提取石子,每人每輪最少提取2顆,最多提取5顆,取到最後一顆石子者為勝 請設定這堆石子的顆數 至少50顆 使先手有必勝的策略,並說明你的策略 設定的石子...

面試智力題

最近蒐集了一些面試的智力題,特來分享一下,改變下思維方式 1 燒一根不均勻的繩子,從頭燒到尾總共需要1個小時,問如何用燒繩子的方法來確定半小時的時間呢?2 10個海盜搶到了100顆寶石,每一顆都一樣大小且價值連城。他們決定這麼分 1 抽籤決定自己的號碼 1 10 2 首先,由1號提出分配方案,然後大...

筆試智力題

1.如何快速找出乙個32位整數的二進位制表達裡有多少個 1 用關於 1 的個數的線性時間?答案1 關於數字位數線性 for n 0 b b 1 if b 1 n 答案2 關於 1 的個數線性 for n 0 b n b b 1 2.乙個大小為n的陣列,所有數都是不超過n 1的正整數。用o n 的時間...