hdu 1846 Brave Game
阿新 • • 發佈:2018-12-10
博弈論的一道入門題
當n < m的時候一定是第一個人贏;
當n > m的時候我們可以進行分解為n = (m + 1) * r + s;
當s == 0;那麼一定是第二個人贏,因為無論第一個人如何拿,第二個人總是會給對方留下(m + 1)的倍數;最終一定是第二個人獲勝;
所以可以推出誰拿的時候是 (m + 1)的倍數,那麼他就會輸掉;
程式碼如下
#include <bits/stdc++.h> typedef long long ll; using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); ll t; cin >> t; while(t--) { ll x,y; cin >> x >> y; if(x <= y) { cout << "first" << endl; continue; } if(x % (y + 1) == 0) { cout << "second" << endl; } else { cout << "first" << endl; } } return 0; }