BZOJ4314 倍數?倍數!

好神仙啊....


題意

在$ [0,n) $中選$?k$個不同的數使和為$ n$的倍數

求方案數

$ n \leq 10^9, \ k \leq 10^3$


題解

k可以放大到1e6的

先不考慮$?k$的限制

對答案構建多項式$ f(x)=\prod\limits_{i=0}^{n-1}(x^i+1)$

答案就是這個多項式所有次數為$ n$的倍數的項的系數和

考慮單位根反演

$$ans=\frac{1}{n}\sum_{i=0}^{n-1}\prod_{j=0}^{n-1}(w_n^{ij}+1)$$

設$ d=\gcd(n,i),t=\frac{n}{d}$

$$ans=\frac{1}{n}\sum_{d|n}\sum_{i=0}^{t-1}(\prod_{j=0}^{t-1}(w_t^{ij}+1))^d[\gcd(t,i)=1]$$

由于$\gcd(t,i)=1$,可以去掉單位根指數上的$ i$

$$ans=\frac{1}{n}\sum_{d|n}\sum_{i=0}^{t-1}(\prod_{j=0}^{t-1}(w_t^{j}+1))^d[\gcd(t,i)=1]$$

考慮$ \prod\limits_{j=0}^{t-1}(w_t^{j}+1)$是什么

根據定義可知$ w_t^{0..t-1}$是$ x^t-1=0$的$ n$個根

因此有$ x^t-1=\prod\limits_{i=0}^{t-1}(x-w_t^i)$

討論$ n$的奇偶性可得$?\prod\limits_{j=0}^{t-1}(w_t^{j}+1)=1-(-1)^t$

再用歐拉函數進行化簡得$$ans=\frac{1}{n}\sum_{d|n}\phi(t)(1-(-1)^t)^d$$

?

然后考慮有$?k$這個限制怎么做

我們再添加一個新變量$ y$,以$ y$為主元構建多項式$ f(y)=\prod\limits_{i=0}^{n-1}(yx^i+1)$

我們要求的就是這個多項式$ y^k$的系數

用跟上面相同的方法可以化簡得最后的答案多項式為$$ans=\frac{1}{n}\sum_{d|n}\phi(t)(1-(-y)^t)^d$$

由于只需要知道$y^k$的系數,直接展開就好了

跑的飛快


代碼

#include<ctime>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
#define p 1000000007
#define rt register int
#define ll long long
using namespace std;
inline ll read(){ll x=0;char zf=1;char ch=getchar();while(ch!='-'&&!isdigit(ch))ch=getchar();if(ch=='-')zf=-1,ch=getchar();while(isdigit(ch))x=x*10+ch-'0',ch=getchar();return x*zf;
}
void write(ll y){if(y<0)putchar('-'),y=-y;if(y>9)write(y/10);putchar(y%10+48);}
void writeln(const ll y){write(y);putchar('\n');}
int k,m,n,x,y,z,cnt,ans;
int phi[1010],ss[1010];bool pri[1010];
int njc[1010],inv[1010];
int ksm(int x,int y=p-2){int ans=1;for(;y;y>>=1,x=1ll*x*x%p)if(y&1)ans=1ll*ans*x%p;return ans;
}
int C(int x,int y){int ans=1;for(rt i=x;i>=x-y+1;i--)ans=1ll*ans*i%p;return 1ll*ans*njc[y]%p;
}
int main(){n=read();k=read();phi[1]=1;for(rt i=0;i<=1;i++)njc[i]=inv[i]=1;for(rt i=2;i<=k;i++){inv[i]=1ll*inv[p%i]*(p-p/i)%p;njc[i]=1ll*njc[i-1]*inv[i]%p;}for(rt i=2;i<=k;i++){if(!pri[i])ss[++cnt]=i,phi[i]=i-1;for(rt j=1;j<=cnt&&i*ss[j]<=k;j++){phi[i*ss[j]]=phi[i]*phi[ss[j]];pri[i*ss[j]]=1;if(i%ss[j]==0){phi[i*ss[j]]=phi[i]*ss[j];break;} }}int ans=0,invn=ksm(n);for(rt d=1;d<=k;d++)if(n%d==0&&k%d==0){const int v=k/d;int tag=1;if((v&1)&&(d&1^1))tag=-tag;(ans+=1ll*tag*phi[d]%p*invn%p*C(n/d,k/d)%p)%=p;}cout<<(ans+p)%p;return 0;
}

?

轉載于:https://www.cnblogs.com/DreamlessDreams/p/10567084.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278128.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278128.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278128.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

win2008R2管理員密碼修改文檔

場景&#xff1a;忘記了win2008R2服務器的管理員密碼。解決辦法&#xff1a;1、 制作一個U盤啟動盤&#xff1a;2、 系統通過U盤啟動進入WINpe系統3、 在知道Win2008安裝位置的情況下&#xff1b;查找C:\windows\system32\osk.exe 將osk.exe文件修改為&#xff1a;osk.exe.bat&…

Python檔案袋( 面向對象 )

類即是一個模型&#xff0c;根據模型建立起不同的對象&#xff0c;對象間擁有共同的一些屬性 簡單的類&#xff1a; 1 class P:2 #類變量&#xff0c;所有實例共享變量,推薦使用方法是&#xff1a;類名.類變量名3 pvarx"ppvar1"4 5 #構造函數6 def _…

javascript中的后退和刷新

轉自&#xff1a;https://www.cnblogs.com/tylerdonet/p/3911303.html <input typebutton value刷新 οnclick"window.location.reload()"><input typebutton value前進 οnclick"window.history.go(1)"><input typebutton value后退 οncl…

第四周

7-2 選擇法排序 &#xff08;20 分) 本題要求將給定的n個整數從大到小排序后輸出。 輸入格式&#xff1a; 輸入第一行給出一個不超過10的正整數n。第二行給出n個整數&#xff0c;其間以空格分隔。 輸出格式&#xff1a; 在一行中輸出從大到小有序的數列&#xff0c;相鄰數字間有…

checkPathValidity 檢查所有agent的corridor的m_path是否有效

在checkPathValidity&#xff08;檢查所有agent的corridor的m_path是否有效&#xff09; 如果是無效的要進行重新設置并且設置replan 首先獲得第一個polygon&#xff0c;m_path[0] 這里&#xff0c;因為addagent的時候&#xff0c;ag->corridor.reset(ref, nearest); m_path…

來談談JAVA面向對象 - 魯班即將五殺,大喬送他回家??

開發IDE為Eclipse或者MyEclipse。 首先&#xff0c;如果我們使用面向過程的思維來解決這個問題&#xff0c;就是第一步做什么&#xff0c;第二步做什么&#xff1f; 魯班即將五殺&#xff0c;大喬送他回家 這個現象可以簡單地拆分為兩步&#xff0c;代碼大概是這個樣子的: publ…

Vue 教程第一篇——基礎概念

認識 Vue 關于 Vue 的描述有不少&#xff0c;不外乎都會拿來與 Angular 和 React 對比&#xff0c;同樣頭頂 MVVM 雙向數據驅動設計模式光環的 Angular 自然被對比的最多&#xff0c;但到目前為止&#xff0c;Angular 在熱度上已明顯不及 Vue&#xff0c;性能已成為最大的詬病。…

Microsoft Teams的Outgoing Webhook開發入門

Microsoft Teams的應用程序有幾種形式&#xff1a; TabsBotsConnectorsMessaging extensionsActivity feed integrationsOutgoing web hooks 這篇我們主要介紹如何使用 ASP.NET Core來開發最簡單的Outgoing web hook。 什么是outgoing webhook Outgoing webhooks allow you t…

0418 jQuery筆記(添加事件、each、prop、$(this))

1.添加點擊事件、each、prop、$(this) 1 //全選框的被動操作2 //定義一個標志保存最終狀態3 var flag false;4 //為每一個選擇框添加點擊事件&#xff0c;數組.click()5 $(.chex).click(function(){6 //遍歷數組&#xff0c;數組.each()7 …

[WC2008]游覽計劃(斯坦納樹)

[Luogu4294] 題解 : 斯坦納樹 \(dp[i][j]\) 表示以\(i\)號節點為根&#xff0c;當前狀態為\(j\)&#xff08;與\(i\)連通的點為\(1\)&#xff09; 當根\(i\)不改變時狀態轉移方程是&#xff1a; \(dp[i][j] \min_{s \in j}\{dp[i][s] dp[i][\complement_js] - val[i]\}\) 當根…

使用dotnet template快速開發Microsoft Teams Outgoing Web Hook

在上一篇文章中&#xff0c;我們一步步從無到有在Microsoft Teams中開發了一個簡單的Outgoing Webhook&#xff0c;并和我們本地的Web API應用程序產生交互&#xff0c;總結起來的步驟大概如下&#xff1a; 導航到“團隊” Tab頁&#xff0c; 選中需要建立的Channel, 選中“應…

[Swift]LeetCode1013. 將數組分成和相等的三個部分 | Partition Array Into Three Parts With Equal Sum...

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號&#xff1a;山青詠芝&#xff08;shanqingyongzhi&#xff09;?博客園地址&#xff1a;山青詠芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;?GitHub地址&a…

京津冀產業協同升級 智慧城市等高端產業需求遇熱

云計算、智慧交通、城市環保科技等高端智慧城市產業項目正成為京津冀產業協同的新關注點。 21日&#xff0c;在由北京市經信委、天津市工信委、河北省工信廳聯合組織的京津冀產業協同發展招商推介專項行動上&#xff0c;超過200家與會企業共完成產業對接項目額達311.7億元。與以…

Microsoft Teams:刪除成員賬戶其歷史聊天會發生什么?

介紹&#xff1a; 此博客文章的目的是演示從Office 365刪除用戶的賬號后&#xff0c;此用戶在Microsoft Teams群聊和私聊中的歷史聊天記錄會發生什么改變。 以下是Microsoft Teams聊天對話&#xff0c;其中Adele和其他團隊成員正在參與對話&#xff1a; 此外, Adele和Mega還在…

PostgreSQL Huge Page 使用建議 - 大內存主機、實例注意

標簽 PostgreSQL , Linux , huge page , shared buffer , page table , 虛擬地址 , 物理地址 , 內存地址轉換表 背景 當內存很大時&#xff0c;除了刷臟頁的調度可能需要優化&#xff0c;還有一方面是虛擬內存與物理內存映射表相關的部分需要優化。 1 臟頁調度優化 1、主要包括…

Microsoft Teams:團隊Owner離開公司后,我們該怎么做?

您是否曾在這么一個團隊里&#xff0c;該團隊唯一有Owner權限的人離開了公司&#xff1f;不幸的是,如果這個人不再在公司里&#xff0c;您可能覺得沒有辦法讓其他團隊成員再成為team的owner。我有一個簡單易用的解決方案&#xff0c;但您需要成為Office 365租戶的Admin或聯系你…

python網絡編程-socket編程

一、服務端和客戶端 BS架構 &#xff08;騰訊通軟件&#xff1a;serverclient&#xff09; CS架構 &#xff08;web網站&#xff09; C/S架構與socket的關系&#xff1a; 我們學習socket就是為了完成C/S架構的開發 二、OSI七層模型 互聯網協議按照功能不同分為osi七層或tcp/ip五…

使用PowerShell配置Microsoft Teams

作為 IT 專業人員, 我一直在尋找自動化任務的方法, 并使日常操作簡單。當使用Microsoft Teams時, 是否能夠在團隊中自動創建團隊&#xff0c;渠道和設置對于Microsoft Teams組建的成功與否至關重要。PowerShell對Microsoft Teams的支持使您可以做到這一點&#xff0c;它為我提供…

常見Kotlin高頻問題解惑

在筆者的Kotlin交流群里&#xff0c;不少同學反復遇到了一些相似的問題。這些問題大都比較基礎&#xff0c;但又容易產生誤解。因此&#xff0c;我決定寫一篇文章&#xff0c;整理群里同學遇到的一些問題 變量和常量的使用 在Kotlin語言中&#xff0c;我們使用var聲明變量&…

關于神經網絡訓練的一些建議筆記

關于網絡訓練時的參考建議&#xff1a; 1.train loss不斷下降&#xff0c;test loss不斷下降&#xff0c;網絡正在學習 2.train loss不斷下降&#xff0c;test loss趨于不變&#xff0c;網絡過擬合&#xff0c;需要增大數據&#xff1b;減小網絡規模dropout&#xff1b;權重衰減…