程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdoj2149

hdoj2149

編輯:C++入門知識

巴什博奕(Bash Game):只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取一個,最多取m個。最後取光者得勝。
  顯然,如果n=m+1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩余的物品,後者取勝。因此我們發現了如何取勝的法則:如果n=(m+1)r+s,(r為任意自然數,s≤m),那麼先取者要拿走s個物品,如果後取者拿走k(≤m)個,那麼先取者再拿走m+1-k個,結果剩下(m+1)(r-1)個,以後保持這樣的取法,那麼先取者肯定獲勝。總之,要保持給對手留下(m+1)的倍數,就能最後獲勝。
[cpp] 
#include<iostream> 
#include<fstream> 
using namespace std; 
int main() 

    //ifstream cin("acmilan.txt"); 
    int a,b; 
    while(cin>>a>>b) 
    { 
        if(b>=a) 
        { 
            for(int i=a;i<=b;i++) 
            { 
                if(i!=b) 
                    cout<<i<<" "; 
                else 
                    cout<<i<<endl; 
            } 
        } 
        else 
        { 
            if(a%(b+1)==0) 
                cout<<"none"<<endl; 
            else 
            { 
                cout<<a%(b+1)<<endl; 
            } 
 
        } 
 
    } 
    //system("pause"); 
    return 0; 

 作者:teibin

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved