博弈論之SG函數

来源:https://www.cnblogs.com/wjc2021/archive/2019/04/07/10667992.html
-Advertisement-
Play Games

Fibonacci again and again(http://acm.hdu.edu.cn/showproblem.php?pid=1848) Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...


Fibonacci again and again(http://acm.hdu.edu.cn/showproblem.php?pid=1848)

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12753    Accepted Submission(s): 5563


Problem Description 任何一個大學生對菲波那契數列(Fibonacci numbers)應該都不會陌生,它是這樣定義的:
F(1)=1;
F(2)=2;
F(n)=F(n-1)+F(n-2)(n>=3);
所以,1,2,3,5,8,13……就是菲波那契數列。
在HDOJ上有不少相關的題目,比如1005 Fibonacci again就是曾經的浙江省賽題。
今天,又一個關於Fibonacci的題目出現了,它是一個小游戲,定義如下:
1、  這是一個二人游戲;
2、  一共有3堆石子,數量分別是m, n, p個;
3、  兩人輪流走;
4、  每走一步可以選擇任意一堆石子,然後取走f個;
5、  f只能是菲波那契數列中的元素(即每次只能取1,2,3,5,8…等數量);
6、  最先取光所有石子的人為勝者;

假設雙方都使用最優策略,請判斷先手的人會贏還是後手的人會贏。  

 

Input 輸入數據包含多個測試用例,每個測試用例占一行,包含3個整數m,n,p(1<=m,n,p<=1000)。
m=n=p=0則表示輸入結束。  

 

Output 如果先手的人能贏,請輸出“Fibo”,否則請輸出“Nacci”,每個實例的輸出占一行。  

 

Sample Input 1 1 1 1 4 1 0 0 0   Sample Output Fibo Nacci  
#include <iostream>
#include<string.h>
#include<cstdio>
using namespace std;
const int MAXN = 1005;
int f[MAXN];
int s[MAXN];
int sg[MAXN];
void getSG(int n)
{
    int i,j;
    for(i=1;i<=n;i++)
    {
        memset(s,0,sizeof(s));
        for(j=0;f[j]<=i&&j<=20;j++)
                s[sg[i-f[j]]]=1;
        for(j=0;;j++)
        {
            if(!s[j])
            {
                sg[i]=j;
                break;
            }
        }
    }
}
int main()
{
    f[1]=1,f[0]=1;
    for(int i=2;i<=16;i++)
        f[i]=f[i-1]+f[i-2];
        getSG(1000);
    int m,n,p;
    while(scanf("%d%d%d",&m,&n,&p),m||n||p)
    {
        if(sg[m]^sg[n]^sg[p])
            cout << "Fibo" << endl;
        else
            cout << "Nacci" << endl;
    }
    return 0;
}

 

 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 工廠方法模式概述 工廠方法模式是為了彌補簡單工廠模式的不足並且繼承它的優點而延生出的一種設計模式,屬於GoF中的一種。它能更好的符合開閉原則的要求。 舉個例子:大眾汽車公司想必大家都不陌生,它旗下也有不少汽車品牌。大眾汽車公司就好比一個汽車工廠,負責生產和銷售汽車。它可以為客戶提供一個客戶需要的汽車 ...
  • 1.上傳視頻信息的jsp頁面uploadVideo.jsp <body background="image/bk_hero.jpg"><div id="upld" style="height:300px;width:300px;margin-left: 300px;margin-top: 100px ...
  • 後臺servlet設置 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String method=reque ...
  • 清明節和朋友去被抖音帶火的一個餐廳,下午兩點鐘取晚上的號,前面已經有十幾桌了,四點半餐廳開始正式營業,等輪到我們已經近八點了。餐廳分為幾個區域,只有最火的區域(在小船上)需要排號,其他區域基本上是隨到隨吃的,最冷清的區域幾乎都沒什麼人。菜的價格異常的貴,味道也並不好。最後送出兩張圖: 好了,進入今天 ...
  • 簡介 當你的程式不能正常運行的時候,Python會在控制台列印一段提醒,告訴你一個錯誤,這個錯誤就是異常。 錯誤 我在控制台寫了一段無效的代碼,將print()的括弧去掉,在執行這條語句的時候,系統提示語法錯誤,無效的語句(我百度翻譯的)。這就是錯誤處理器所作的工作。 再換一種方式寫錯誤: 在程式獲 ...
  • 1.防止用戶沒有登錄即可訪問其他頁面 1.1>從session中判斷用戶是否登陸 ServletActionContext.getRequest().getSession();以此為依據是否放行 2.註冊自定義攔截器 3.設置預設攔截器 ...
  • 1>***貓: python基礎類: 技能類: 業務類: 你對電商的業務瞭解嗎? 我問你一個具體的電商的業務啊:電商在大多數領域中都是有庫存的,我在下訂單的時候,我的庫存的變化,你知道嗎?(我問的是你怎麼去處理庫存的變化?)因為客戶下單的時候,有些是去減庫存了,有些不減對吧?你的理解呢? 你事務的時 ...
  • 什麼是多線程 利用對象,可將一個程式分割成相互獨立的區域。我們通常也需要將一個程式轉換成多個獨立運行的子任 務。象這樣的每個子任務都叫作一個“線程”(Thread)。編寫程式時,可將每個線程都想象成獨立運行,而且 都有自己的專用CPU。一些基礎機制實際會為我們自動分割CPU的時間。我們通常不必關心這 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...