hdu 1527
取石子游戲
Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6329????Accepted Submission(s): 3417
Problem Description 有兩堆石子,數(shù)量任意,可以不同。游戲開始由兩個(gè)人輪流取石子。游戲規(guī)定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在兩堆中同時(shí)取走相同數(shù)量的石子。最后把石子全部取完者為勝者?,F(xiàn)在給出初始的兩堆石子的數(shù)目,如果輪到你先取,假設(shè)雙方都采取最好的策略,問最后你是勝者還是敗者。
Input 輸入包含若干行,表示若干種石子的初始情況,其中每一行包含兩個(gè)非負(fù)整數(shù)a和b,表示兩堆石子的數(shù)目,a和b都不大于1,000,000,000。
Output 輸出對(duì)應(yīng)也有若干行,每行包含一個(gè)數(shù)字1或0,如果最后你是勝者,則為1,反之,則為0。
Sample Input 2 1 8 4 4 7
Sample Output 0 1 0
感覺這一題出現(xiàn)的目的就是讓大家了解一下威佐夫博弈。用差值乘上黃金分割數(shù)(1+√5)/2 = 1.618,如果等于較小的那個(gè)數(shù)則為必?cái)B(tài),輸出0,否則輸出1.
代碼:
#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;int main(){int a,b,t;double k = (sqrt(5.0)+1.0)/2.0;while(~scanf("%d%d",&a,&b)){if(a>b)swap(a,b);t=(b-a);t=(int)(t*k);if(t==a)printf("0\n");elseprintf("1\n");}return 0;}總結(jié)
- 上一篇: 2020清华大学计算机学院黄翔,清华大学
- 下一篇: surface pro java_全新S