[SDOI2015] 序列統計

来源:https://www.cnblogs.com/nosta/archive/2019/03/20/10568073.html
-Advertisement-
Play Games

由題意可得出遞推式$f[i ,j]=\sum_{e\in S} f[i 1,\frac{j}{e}]$,初值$f[0,0]=1$,答案為$f[n,x]$,具體意義不表。 分析可知$f[1,e(e\in S)]=1$,$f[i,ab]=\sum_{a\in S,b\in S}f[i 1,a]f[1,b ...


由題意可得出遞推式\(f[i ,j]=\sum_{e\in S} f[i-1,\frac{j}{e}]\),初值\(f[0,0]=1\),答案為\(f[n,x]\),具體意義不表。

分析可知\(f[1,e(e\in S)]=1\)\(f[i,ab]=\sum_{a\in S,b\in S}f[i-1,a]f[1,b]\)

設模數\(m\)(指數)的一個原根為\(g\),構造\(e'=\log_g(e)\in S', e\in S\),改寫遞推式\(f[1,e'\in S']=1\),\(f[i,a'+b']=\sum_{a',b\in S'}f[i-1,a']f[1,b']\) 。就能套捲積做了*(^e^)*。

做法的正確性:因為\(g^i(0\le i<m-1)\)能取遍\([1,m-1]\)所有數,故\(e\in S\)都有存在唯一在\([0,m-1)\)里的離散對數。

於是此題就是離散快速傅利葉的模板了。

最後談談\(g\)的求法很暴力,枚舉原根\(g\),然後小大枚舉階(階的個數是\(O(\sqrt M)\)級的)來判斷是否過早地產生迴圈,如下

int getG(int m) {
    vector<int> r;
    for(int i=2; i*i<=m-1; ++i) if((m-1)%i==0) {
        r.push_back(i);
        if(i*i!=m-1) r.push_back((m-1)/i);
    }
    sort(r.begin(),r.end());
    for(int i=2; ; ++i) {
        bool flag=1;
        for(auto rr: r) if(fpow(i,rr,m)==1) {flag=0; break;}
        if(flag) return i;
    }
}

就醬,實現留坑。


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

-Advertisement-
Play Games
更多相關文章
  • 微服務網關 在微服務架構中,後端服務往往不直接開放給調用端,而是通過一個API網關根據請求的url,路由到相應的服務。當添加API網關後,在第三方調用端和服務提供方之間就創建了一面牆,這面牆直接與調用方通信進行許可權控制,後將請求均衡分發給後臺服務端。 為什麼需要API Gateway 1. 簡化客戶 ...
  • //此項目用來跑臨時碰到的問題。。 /*此程式使用死迴圈測試多進程的運行。 packagetest; publicclassExample{ publicstaticvoidmain(String[]args){ while(true){ ... ...
  • /************************************************** *程式名:test1.cpp *編輯者:鴻灬噯 *註:驗證全局變數的改變。 ***************************************************/ #includ... ...
  • 普通的bean的初始化是在容器啟動初始化階段執行的,而被lazy-init修飾的bean 則是在從容器里第一次進行context.getBean(“”)時進行觸發。Spring 啟動的時候會把所有bean信息(包括XML和註解)解析轉化成Spring能夠識別的BeanDefinition並存到Has ...
  • 1.spring約束的導入 2.SSH常用約束 3.application.xml的引入方式 <1.通過ClassPathXmlApplicationContext引入配置文件application.xml <2.application.xml <3.命名空間的引入 4.在過濾器中配置applica ...
  • 今天遇到一問題,js文件中調用字元串的replace方法,不起作用。 後來排查可能覺得replace("<option value='1'>admin</option>","")中,前邊的字元串單引號也要和頁面上的一致才能。 果然發現頁面中的value用的是“”雙引號,我自己寫的是''單引號,導致匹 ...
  • C語言中的記憶體分配與釋放 對C語言一直都是抱著學習的態度,很多都不懂,今天突然被問道C語言的記憶體分配問題,說了一些自己知道的,但感覺回答的並不完善,所以才有這篇筆記,總結一下C語言中記憶體分配的主要內容。 相關問題 剛剛在一篇博文看到一個簡單的問題: 兩段代碼都很簡單,輸出一段字元,類型不同,一個是c ...
  • 使用python requests模塊調用vmallarg.vmall.com介面API時報如下錯誤: requests.exceptions.ConnectionError: HTTPSConnectionPool(host='vmallrag.vmall.com', port=443): Max ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...