1. 程式人生 > >邂逅明下 HDU - 2897

邂逅明下 HDU - 2897

Problem description:

  有三個數字n,p,q,表示一堆硬幣一共有n枚,從這個硬幣堆裡取硬幣,一次最少取p枚,最多q枚,如果剩下少於p枚就要一次取完。兩人輪流取,直到堆裡的硬幣取完,最後一次取硬幣的算輸。對於每一行的三個數字,給出先取的人是否有必勝策略,如果有回答WIN,否則回答LOST。

Input 不超過100000行,每行三個正整數n,p,q。Output對應每行輸入,按前面介紹的遊戲規則,判斷先取者是否有必勝策略。輸出WIN或者LOST。 Sample Input
7 2 4
6 2 4
Sample Output
LOST
WIN

思路:總是讀題不準,原來是最後一個取的人會輸,而且這個不能用動態規劃做,會超時。
 這個其實是巴什博奕。
#include<iostream>
using namespace std;
int main(){
    int n,p,q;
    while(cin>>n>>p>>q){
        int s=n%(p+q);
        if(s==0)
            cout<<"WIN"<<endl;
        else if(s<=p)
            cout<<"LOST"<<endl;
        else
            cout
<<"WIN"<<endl; } }