子集计数 (单位根反演,分圆多项式,分块打表阶乘法)

16 篇文章 0 订阅
7 篇文章 0 订阅

题面

求在集合 { 1 , 2 , 3 , . . . , n } \{1,2,3,...,n\} {1,2,3,...,n} 中选一个大小为 m m m 的子集,子集和在模 n n n 意义下为 k k k 的方案数,取模 998244353 998244353 998244353

1 ≤ m ≤ n ≤ 998244353 , 0 ≤ k < n 1≤m≤n≤998244353,0\leq k<n 1mn998244353,0k<n.

题解

笔者有史以来遇见过的最难搞的数论题。(看来还是我太菜了)

我们先从答案的生成函数推起,根据题意,我们可以列一个二元生成函数

F ( x , y ) = ∏ i = 1 n ( 1 + x i y ) F(x,y)=\prod_{i=1}^{n}(1+x^iy) F(x,y)=i=1n(1+xiy)

那么子集大小为 m ,为 k 的方案数就为 [ [ x k y m ] ] F ( x , y ) [[x^ky^m]]F(x,y) [[xkym]]F(x,y) ,这里笔者用 [ [ x i y j ] ] F ( x , y ) [[x^iy^j]]F(x,y) [[xiyj]]F(x,y) 表示 F ( x , y ) F(x,y) F(x,y)x 次数为 i 、y 次数为 j 的项的系数。那么答案为:

A n s = ∑ i = 1 ∞ [ i % n = k ] [ [ x i y m ] ] F ( x , y ) Ans=\sum_{i=1}^{\infty}[i\%n=k][[x^iy^m]]F(x,y) Ans=i=1[i%n=k][[xiym]]F(x,y)

单位根反演

第一步,我们用单位根反演: [ n ∣ k ] = 1 n ∑ i = 1 n ω n i k [n|k]=\frac{1}{n}\sum_{i=1}^{n}\omega_n^{ik} [nk]=n1i=1nωnik ,把它代入,调换下枚举顺序,应该不难理解:

1 n ∑ j = 1 n ∑ i = 1 ∞ ω n j ( i − k ) [ [ x i y m ] ] F ( x , y ) \frac{1}{n}\sum_{j=1}^{n}\sum_{i=1}^\infty\omega_n^{j(i-k)}[[x^iy^m]]F(x,y) n1j=1ni=1ωnj(ik)[[xiym]]F(x,y)

( i − k ) (i-k) (ik) 括号打开:

1 n ∑ j = 1 n ω n − j k ∑ i = 1 ∞ ω n i j [ [ x i y m ] ] F ( x , y ) \frac{1}{n}\sum_{j=1}^{n}\omega_n^{-jk}\sum_{i=1}^\infty\omega_n^{ij}[[x^iy^m]]F(x,y) n1j=1nωnjki=1ωnij[[xiym]]F(x,y)

把函数 F ( x , y ) F(x,y) F(x,y) 代进去:

1 n ∑ j = 1 n ω n − j k ∑ i = 1 ∞ ω n i j [ [ x i y m ] ] ( ∏ l = 1 n ( 1 + x l y ) ) \frac{1}{n}\sum_{j=1}^{n}\omega_n^{-jk}\sum_{i=1}^\infty\omega_n^{ij}[[x^iy^m]](\prod_{l=1}^n(1+x^ly)) n1j=1nωnjki=1ωnij[[xiym]](l=1n(1+xly))

这里我们可以把 ω n i j \omega_n^{ij} ωnij 拆开, ω n i j = ω n l 1 j ω n l 2 j ω n l 3 j . . . ( l 1 + l 2 + l 3 + . . . = i ) \omega_n^{ij}=ω_n^{l_1j}ω_n^{l_2j}ω_n^{l_3j}...(l_1+l_2+l_3+...=i) ωnij=ωnl1jωnl2jωnl3j...(l1+l2+l3+...=i),那么就可以等价地把它放进多项式里,这样多项式的 [ [ x i y m ] ] [[x^iy^m]] [[xiym]] 项系数就自动带了个 ω n i j ω_n^{ij} ωnij 了:

1 n ∑ j = 1 n ω n − j k ∑ i = 1 ∞ [ [ x i y m ] ] ( ∏ l = 1 n ( 1 + ω n j l x l y ) ) \frac{1}{n}\sum_{j=1}^{n}\omega_n^{-jk}\sum_{i=1}^\infty[[x^iy^m]](\prod_{l=1}^n(1+\omega_n^{jl}x^ly)) n1j=1nωnjki=1[[xiym]](l=1n(1+ωnjlxly))

这时候我们把多项式的 [ [ x 1 y m ] ] , [ [ x 2 y m ] ] , [ [ x 3 y m ] ] . . . [[x^1y^m]],[[x^2y^m]],[[x^3y^m]]... [[x1ym]],[[x2ym]],[[x3ym]]... 项系数全都加起来,x 的次数已经没有太大意义了,那我们就不需要 x 这个未知数了,直接设 x=1,去掉它,变成一个一元多项式:

1 n ∑ j = 1 n ω n − j k [ [ y m ] ] ( ∏ i = 1 n ( 1 + ω n i j y ) ) \frac{1}{n}\sum_{j=1}^{n}\omega_n^{-jk}[[y^m]](\prod_{i=1}^n(1+\omega_n^{ij}y)) n1j=1nωnjk[[ym]](i=1n(1+ωnijy))

虽然 ∏ i = 1 n ( 1 + ω n i j ) \prod_{i=1}^{n}(1+ω_{n}^{ij}) i=1n(1+ωnij) 这种形式不太优美,但是 ∏ i = 1 n ( 1 + ω n i ) \prod_{i=1}^{n}(1+ω_{n}^{i}) i=1n(1+ωni) 却有很多好性质,比如可以用分圆多项式化简,那我们想怎么去掉这个 j ,取 j 和 n 的 gcd:

1 n ∑ d ∣ n ∑ j = 1 n / d [ ( j , n / d ) = 1 ] ω n / d − j k [ [ y m ] ] ( ∏ i = 1 n / d ( 1 + ω n / d i j y ) ) d \frac{1}{n}\sum_{d|n}\sum_{j=1}^{n/d}[(j,n/d)=1]\omega_{n/d}^{-jk}[[y^m]](\prod_{i=1}^{n/d}(1+\omega_{n/d}^{ij}y))^d n1dnj=1n/d[(j,n/d)=1]ωn/djk[[ym]](i=1n/d(1+ωn/dijy))d

因为若 gcd ⁡ ( j , n ) = 1 \gcd(j,n)=1 gcd(j,n)=1,则集合 { j , 2 j , 3 j , . . . , ( n − 1 ) j } \{j,2j,3j,...,(n-1)j\} {j,2j,3j,...,(n1)j} 模 n 意义下等于集合 { 1 , 2 , 3 , . . . , n − 1 } \{1,2,3,...,n-1\} {1,2,3,...,n1},这是互质数的一条性质,那么我们就可以等价地把 j 去掉了:

1 n ∑ d ∣ n ∑ j = 1 n / d [ ( j , n / d ) = 1 ] ω n / d − j k [ [ y m ] ] ( ∏ i = 1 n / d ( 1 + ω n / d i y ) ) d \frac{1}{n}\sum_{d|n}\sum_{j=1}^{n/d}[(j,n/d)=1]\omega_{n/d}^{-jk}[[y^m]](\prod_{i=1}^{n/d}(1+\omega_{n/d}^{i}y))^d n1dnj=1n/d[(j,n/d)=1]ωn/djk[[ym]](i=1n/d(1+ωn/diy))d

分圆多项式

我们想想怎么利用分圆多项式:
x n − 1 = ∏ i = 1 n ( x − ω n i ) x^n-1=\prod_{i=1}^{n}(x-\omega_n^i) xn1=i=1n(xωni)

ω ω ω 后面提出个 − y -y y 来放后面:

= 1 n ∑ d ∣ n ∑ j = 1 n / d [ ( j , n / d ) = 1 ] ω n / d − j k [ [ y m ] ] ( ( ∏ i = 1 n / d ( − 1 y − ω n / d i ) ) d ( − y ) n ) =\frac{1}{n}\sum_{d|n}\sum_{j=1}^{n/d}[(j,n/d)=1]\omega_{n/d}^{-jk}[[y^m]]((\prod_{i=1}^{n/d}(-\frac{1}{y}-\omega_{n/d}^{i}))^d(-y)^n) =n1dnj=1n/d[(j,n/d)=1]ωn/djk[[ym]]((i=1n/d(y1ωn/di))d(y)n)

那么令 x = − 1 y x=-\frac{1}{y} x=y1 ,代入分圆多项式:

= 1 n ∑ d ∣ n ∑ j = 1 n / d [ ( j , n / d ) = 1 ] ω n / d − j k [ [ y m ] ] ( ( ( − 1 y ) n / d − 1 ) d ( − y ) n ) =\frac{1}{n}\sum_{d|n}\sum_{j=1}^{n/d}[(j,n/d)=1]\omega_{n/d}^{-jk}[[y^m]](((-\frac{1}{y})^{n/d}-1)^d(-y)^n) =n1dnj=1n/d[(j,n/d)=1]ωn/djk[[ym]](((y1)n/d1)d(y)n)

少了个 ∏ \prod 真爽,接下来再把 ( − y ) n (-y)^n (y)n 还回来:

= 1 n ∑ d ∣ n ∑ j = 1 n / d [ ( j , n / d ) = 1 ] ω n / d − j k [ [ y m ] ] ( 1 − ( − y ) n / d ) d =\frac{1}{n}\sum_{d|n}\sum_{j=1}^{n/d}[(j,n/d)=1]\omega_{n/d}^{-jk}[[y^m]](1-(-y)^{n/d})^d =n1dnj=1n/d[(j,n/d)=1]ωn/djk[[ym]](1(y)n/d)d

既然跟 j 无关了,不如把它放到前面去:

= 1 n ∑ d ∣ n [ [ y m ] ] ( 1 − ( − y ) n / d ) d ∑ j = 1 n / d [ ( j , n / d ) = 1 ] ω n / d − j k =\frac{1}{n}\sum_{d|n}[[y^m]](1-(-y)^{n/d})^d\sum_{j=1}^{n/d}[(j,n/d)=1]\omega_{n/d}^{-jk}\\ =n1dn[[ym]](1(y)n/d)dj=1n/d[(j,n/d)=1]ωn/djk

后面那个 ∑ \sum 紧跟的式子我们可以用莫比乌斯反演。(笔者的莫反从不一步写)

莫比乌斯反演

老套路,先设一个函数 f f f:
f ( e ) = ∑ j = 1 n / d [ ( j , n / d ) = e ] ω n / d − j k f(e)=\sum_{j=1}^{n/d}[(j,n/d)=e]\omega_{n/d}^{-jk} f(e)=j=1n/d[(j,n/d)=e]ωn/djk

g ( e ) = ∑ e ∣ i f ( i ) g(e)=\sum_{e|i}f(i) g(e)=eif(i),那么:

g ( e ) = ∑ j = 1 n / d [ e ∣ ( j , n / d ) ] ω n / d − j k = [ e ∣ n / d ] ∑ j = 1 n / d e ω n / d − j e k g(e)=\sum_{j=1}^{n/d}[e|(j,n/d)]\omega_{n/d}^{-jk}=[e|n/d]\sum_{j=1}^{n/de}\omega_{n/d}^{-jek} g(e)=j=1n/d[e(j,n/d)]ωn/djk=[en/d]j=1n/deωn/djek

代入莫反公式: f ( x ) = ∑ x ∣ e g ( e ) μ ( e / x ) f(x)=\sum_{x|e}g(e)\mu(e/x) f(x)=xeg(e)μ(e/x),那么后面那个 ∑ \sum 式子就为:

a n s = f ( 1 ) = ∑ e ∣ n d μ ( e / 1 ) ∑ j = 1 n / d e ω n / d e − j k ans=f(1)=\sum_{e|\frac{n}{d}}\mu(e/1)\sum_{j=1}^{n/de}\omega_{n/de}^{-jk} ans=f(1)=ednμ(e/1)j=1n/deωn/dejk

再用一次单位根反演 (正演),注意公式前的分数要带进去:
= ∑ e ∣ n d μ ( e ) n d e [ n d e ∣ k ] =\sum_{e|\frac{n}{d}}\mu(e)\frac{n}{de}[\frac{n}{de}|k] =ednμ(e)den[denk]
我们最后把这个 ∑ \sum 代入总答案,一切变得明朗了。

二项式定理

代入过后:
A n s = 1 n ∑ d ∣ n [ [ y m ] ] ( 1 − ( − y ) n / d ) d ∑ e ∣ n d μ ( e ) n d e [ n d e ∣ k ] Ans=\frac{1}{n}\sum_{d|n}[[y^m]](1-(-y)^{n/d})^d\sum_{e|\frac{n}{d}}\mu(e)\frac{n}{de}[\frac{n}{de}|k] Ans=n1dn[[ym]](1(y)n/d)dednμ(e)den[denk]

使用二项式定理,不用解释了吧,把函数部分变一下:

= 1 n ∑ d ∣ n [ [ y m ] ] ( ∑ i = 0 d ( − ( − y ) n / d ) i C ( d , i ) ) ∑ e ∣ n d μ ( e ) n d e [ n d e ∣ k ] =\frac{1}{n}\sum_{d|n}[[y^m]](\sum_{i=0}^{d}(-(-y)^{n/d})^iC(d,i))\sum_{e|\frac{n}{d}}\mu(e)\frac{n}{de}[\frac{n}{de}|k] =n1dn[[ym]](i=0d((y)n/d)iC(d,i))ednμ(e)den[denk]

那么第 m 次项系数就可以直接表示出来:

= 1 n ∑ d ∣ n [ n d ∣ m ] ( − 1 ) m d / n + m C ( d , m d / n ) ∑ e ∣ n d μ ( e ) n d e [ n d e ∣ k ] =\frac{1}{n}\sum_{d|n}[\frac{n}{d}|m](-1)^{md/n+m}C(d,md/n)\sum_{e|\frac{n}{d}}\mu(e)\frac{n}{de}[\frac{n}{de}|k]\\ =n1dn[dnm](1)md/n+mC(d,md/n)ednμ(e)den[denk]

第二个 ∑ \sum 的式子可以预处理出来,现在难题来了,怎么算组合数?

⭐分块打表⭐

令块大小为 B B B ,我们提前把 B ! , ( 2 B ) ! , ( 3 B ) ! , . . . ( 98244353 − 998244353 % B ) ! B!,(2B)!,(3B)!,...(98244353-998244353\%B)! B!,(2B)!,(3B)!,...(98244353998244353%B)! 都算出来,放在 const int num[MOD/B+5] 数组里,然后我们每次算组合数时,需要求阶乘,如果要求 n ! n! n! 相当于求 ( k B ) ! ⋅ ∏ i = k B + 1 n i      ( k = [ n B ] ) (kB)!\cdot\prod_{i=kB+1}^{n}i\;\;(k=[\frac{n}{B}]) (kB)!i=kB+1ni(k=[Bn]) ( k B ) ! (kB)! (kB)! 的值可以直接查表,剩下的就是 O ( B ) O(B) O(B) 计算尾巴了。

由于代码不能过长,因此量力而行,我们令 B = 316000 B=316000 B=316000 就行了。然后,为了优化复杂度,我们把 ≤ 2 e 7 \leq 2e7 2e7 的阶乘预处理出来。于是就可以很快地算出组合数了,再根据式子枚举 n 的因数计算答案,时间复杂度 O ( 可 过 ) O(可过) O()

CODE

(别尝试往右翻,表很长,30 Kb)

#include<set>
#include<map>
#include<cmath>
#include<ctime>
#include<queue>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define MAXN 100005
#define MAXM 20000005
#define DB double
#define LL long long
#define ENDL putchar('\n')
#define lowbit(x) (-(x) & (x))
#pragma GCC optimize(2)
LL read() {
	LL f = 1,x = 0;char s = getchar();
	while(s < '0' || s > '9') {if(s=='-')f = -f;s = getchar();}
	while(s >= '0' && s <= '9') {x=x*10+(s-'0');s = getchar();}
	return f * x;
}
const int MOD = 998244353;
const int Bl = 316000;
const int NUM[3165]={1,83346559,752733536,542562022,66389599,996728981,141426372,910205389,551948678,821530116,29283142,385425850,558376321,909620297,717323776,992754474,552795750,163322062,548964309,247086981,265924126,118300330,513097048,270780466,752294006,40000658,856893446,481574299,861152706,978357125,740021117,488361403,659403501,223506321,72871492,387246581,857947161,343513611,70845772,135380453,495119176,603628205,197520659,960108460,125052219,105828549,817042130,850030689,395218085,471223099,662387095,241325333,73340265,383961393,759200322,464249939,956277785,106361625,136278066,208666312,627444052,769194178,86938295,400536939,956991569,119712991,78036417,377541093,248939060,148294700,711977544,404858008,996688800,310201652,304232940,867466114,603235356,502782475,961377349,46579386,697308205,62927383,492349296,296384451,461087091,302224653,448967291,832578818,769645951,430971270,963462859,396587349,131617849,877305313,540191513,234071392,444927256,467458459,757227091,318309430,682682315,162830445,446538207,599806601,90408724,369521657,785436760,695641543,7783341,830247982,311809675,738546505,55183411,612288658,426716372,743750992,971114401,407551777,524841087,802564315,581665052,641827928,336168780,9866553,646489870,549792287,145781971,831257436,389110633,124313804,140572983,333856377,860169523,799164819,21273570,518467198,975094914,830794566,395444405,298779451,471992296,601350105,501463378,295241147,667028660,896502964,959349439,844272652,204945868,152354175,73732226,120287851,681280301,700419408,941578629,30580948,869489164,278014616,182169011,285906576,277581406,861995234,187273525,736465849,541476047,149217689,836804782,873237299,585184857,50628655,101707202,805363613,992332203,822037874,527748638,851555446,681571676,145377270,519139969,356381783,102709957,113733600,906615681,207243922,358657970,81717845,53671617,705387884,290948691,708325866,282508221,617431293,281520083,968851211,986598087,982269475,642489025,297026028,188967217,874115475,947701400,590400382,968862279,363496013,971492302,181616444,244807425,54327333,830874202,969833049,579166643,976220645,270995907,416731062,284994249,85354228,665148363,221842174,704666460,30120890,784906172,912436817,792670887,691762187,548907842,951003395,518352731,739837100,120066094,830529826,390628207,108093625,61751319,597743621,732436603,454176750,183907128,841200216,511957442,791767023,335591553,564256152,226748197,579940705,230610473,592737378,260666325,816491481,90522262,77173501,937835947,165875922,21912513,951097259,626851758,349018292,300774715,535585197,662930144,699965370,204768802,509929555,833409346,694545961,345427356,693880097,129509730,575378465,259014223,559996402,930023114,382648773,215261014,532974521,71583860,255190604,437174126,720120379,195950243,785167921,123826462,279955405,598264527,124645011,942802049,80085810,825352149,784118909,704540883,709708208,544692193,634133944,743357893,292743159,303783823,185255060,766703178,935405092,671169522,499032103,112732874,776689950,76777815,423939795,384374008,357497096,839487239,432837136,896293374,745330274,311154715,464122934,945035564,562940261,77712774,940738877,798360326,973807875,120064466,460414529,191501606,749358926,234724892,860460831,375712931,217141327,706623581,9568080,575373347,321289486,785770943,674438056,35123186,84088674,910947098,311152449,968888601,771349313,655264064,442665395,777294156,240469746,44710267,690445075,884979759,949017357,947307918,400670331,902286368,692848779,980701383,918777024,977902417,773225393,285301263,701879647,365034530,33855982,927290462,655023039,971629829,357382010,518565279,131615352,943161051,583810408,821176521,541750745,757810637,468465749,454241656,655614828,345931072,559376243,965735896,298455371,969242981,584427905,396459641,546491803,372291393,913542828,314536640,841033993,451297911,870421369,960099599,877844281,444215154,29150614,753062054,335877137,705562374,52201274,535197234,343978968,822855338,564174650,80499634,461001109,498240557,674354436,516562001,729367092,786652631,427070342,127923443,275643576,532104058,99430025,344551203,348463928,925933507,606925805,646375946,174935005,202295557,787786789,721992045,564213905,737520236,372269981,700375766,433633117,527788730,222100111,461315393,851307156,428629613,782206600,759979563,8085088,250994753,41750770,798251238,864287711,160990314,298552230,50800015,601931407,189822301,257265692,571490108,21147244,393927774,852274489,407629145,93145732,14679410,888041638,461749160,573788230,511610795,114858168,448483744,707556005,247804426,703287914,355076381,739880012,565124458,404979363,762633552,154780421,693328166,230018185,721431967,917017134,626096161,383615575,655031216,608768266,292849184,425054315,282104414,104933575,812107309,555175013,406875035,493313131,477235680,667313376,103647846,265189692,589121276,132662166,790003195,477322138,403420160,931234686,63888316,163643651,173122756,329485025,348139090,991913284,347402741,414840450,380090645,768244765,749696762,117037830,827485383,194555121,386750940,351846416,422187582,543158018,931242794,461571001,651112542,51267995,167496806,869271948,798060549,926150495,58376965,160756211,543167412,556147010,562842239,200097971,409201029,950828625,906799514,26394406,958526206,273240014,82826048,363321977,122262124,900975640,919188801,236707975,966533474,341163817,921599363,892927873,745359461,267123990,601631830,601247254,689817247,3251482,463872081,183946165,51781730,566995919,389934039,124811122,336265578,375093975,362002556,996190173,19528402,930525465,751336516,964241385,760034222,428320233,842699450,48805155,711701832,220674212,567000621,41560890,158660535,1325464,142425409,830317186,878336049,326316267,612907240,717076309,805666948,701493994,245747988,391531428,40374500,556981760,255141752,371727465,118757050,769640774,522770329,415712355,483730210,385177140,711378606,340196322,236179090,207524618,843864694,462597153,776639457,567515951,548393287,195214283,486801075,823680307,245942980,659587871,575901614,268828104,181691456,654227625,446340949,539437461,209548871,889441470,718925527,843292257,764009415,467905637,229236136,314928545,289580580,74249436,265384876,126996544,27166593,227478037,853267284,572670637,146752337,379123792,679574818,607245634,812199546,648910713,204251390,837008077,594898450,840277955,15079985,421875071,840957466,533538709,93213896,178123997,638999422,517779263,838133673,834779610,717716473,11034966,601083268,737067009,214904567,95472365,253251894,617935769,808238831,78138524,208670115,700507654,700737378,796206396,833375503,15032190,34970195,307000713,285477704,133334980,527637308,65752661,56040822,195036210,461891649,122536332,499995205,781371921,237019572,710421020,211683651,836103658,942100812,318276643,349587219,923615922,620487293,493569384,985900607,571761677,450886588,126860518,777266254,436665181,705983930,696385577,71911830,657188810,71059632,75529706,404309706,64279557,534110491,272399853,574341090,798769954,530316421,601450068,822293337,498840513,330394787,832660136,725440008,785410492,426946118,946586852,112513634,289262183,284248709,597585287,677275595,137515568,154225311,961120856,517526741,811759146,563103408,394612033,208310936,829304936,424214826,452999203,212053,942851064,987873872,158779909,666340657,296551445,945704954,760910155,818438836,635876090,729237879,117690605,201069766,458687095,994334355,925872620,95301463,316070156,298855302,628649080,985383257,238305970,38944156,363780354,353070689,139554518,56673451,195340118,911109235,411613632,3559484,989379654,57339100,110316485,484445141,508770063,930575339,667266696,942940376,484888077,674119216,111318936,213593008,255376962,248733205,166500828,130088975,348059687,567198053,214280846,525252768,850547059,97020000,125247496,969173922,584158668,720946872,980535884,712737334,472223660,12061522,959847619,395218255,441352478,614190675,963631755,215599514,57409603,439779103,672771221,44216679,118115505,483039882,420171678,831220038,887697697,532309199,831345721,903303528,209637481,76963203,895947198,469701967,775588249,360342157,551365866,454864601,54249973,501541535,657063425,692369610,733205710,72985523,440798883,154958174,431940388,734554600,153278883,270031236,933961389,892970610,983955004,759584137,740106844,166611769,548944792,644881304,504732990,281511092,637026891,588758322,537400612,869732716,952719250,720241731,116564374,658226575,529965264,537980184,880331222,326220724,897598982,653948401,731579128,201506295,931620409,631706529,740131347,187071945,485928280,963753498,526121167,115637788,932857071,174807680,265076222,138002390,22508465,282160796,127810357,362166096,411427766,424751031,233221558,408573039,958462259,878413066,555833295,690599473,175201678,551890869,242278861,50863089,385003080,169047014,46227902,409028268,112793326,965898749,925544095,669694731,219469983,247896345,329712949,568017854,703421120,259234172,939652894,27262005,341959610,309268548,758191189,532767346,734465772,27542966,57572117,681184715,817597966,600487510,731237780,252838276,78153213,208505554,74940136,277006369,369344605,331667459,66824832,927278996,982164,593289819,470396320,498427917,204947079,832182321,390477968,494997744,352683390,205062088,888327218,134263706,343752343,322991126,479155841,723104406,338328890,530337079,239691090,244125214,830299158,48658655,679710697,803796889,995921854,562714822,943075441,198737781,76788455,447089248,886997453,992783155,411133473,397530155,484472995,734504379,671435096,655554162,937357648,484443438,493398226,545703072,831005611,953192459,745946925,700594319,711505075,919854911,849404986,265591538,455327429,265740240,509297721,593803622,411623444,609398091,635937959,400693684,824650755,182532306,841993643,552366980,77469511,857023998,504104321,901146179,727695753,901646562,491850340,867893192,849164242,899557428,315182932,17045243,788499387,12750651,200272396,407458005,309709598,998018032,500755287,806932637,641332471,863690768,831225027,752481486,910100415,639554298,99111359,236249153,128729124,671412614,514344239,603298604,620845678,432502801,307654816,385781550,514387007,713441399,297657145,991878602,733303500,851138160,525913779,982250831,839926069,5733322,767791521,65067746,990511520,480415815,463354229,799081522,269758469,696495594,244929785,188246123,746208930,638620269,124813374,164986335,589026211,284991602,44389679,711024465,258192544,171107871,347638599,441611823,360942970,183251115,537446358,91527856,332648352,10441940,738670528,673688814,358851203,55026077,294178812,961554342,702947164,392439829,642917158,119237041,568577439,602964726,928865161,554814274,698063369,544289725,28746519,143777109,756125745,387087519,647714372,605746926,385538755,600533144,98136114,989744846,237254699,881426031,394503631,512933738,906104437,157469992,831105716,643776824,234943285,480901446,708739189,68540545,391890460,756724116,885486355,723115326,336251780,856493636,109769225,664344471,401881758,207991840,170267336,413162692,440046084,12544186,541476357,422825059,524905213,254115874,62779780,657751351,633033456,314223745,803628934,819007146,562440870,905000366,935558430,472234384,189946541,902995180,737799156,294448995,24865336,962923895,689065487,425069337,385010920,726735633,332647364,797324900,166769323,997521539,899835081,732457905,743145375,537089918,793476384,10672148,69008820,186247378,546582768,103021192,591354272,74128829,738766881,264394822,373857067,466952636,646087873,275124808,640908347,899336396,648291703,389040309,171992036,624574379,292593262,741271201,706516820,431386041,437168966,305166417,758404841,700998151,144334901,179601435,434512588,982032550,757843516,746585164,688187602,411775092,403413859,90945176,516649975,242116940,700847725,356924549,786573526,357979085,787596670,281337339,825407776,349381974,170261872,466077409,492124804,486866320,571470268,502688317,95550283,253101565,927052568,917476204,752216429,81009169,751467543,647944990,556329022,247791062,790173332,949716511,859944298,505530494,369047239,78695115,984032909,416991243,384739851,370491777,525148041,824629016,455619835,752216141,880907393,807805662,934879945,388474024,989940031,26103755,60588157,439284094,543003239,692344540,299470768,57004462,992447147,284745300,769326416,955254545,222185810,134080950,369991283,449179404,141036517,139634791,603682561,747075030,253976264,441920135,636298307,827457648,396872686,424874455,167416539,973276171,751268912,419918222,899377248,63264047,650530152,173350007,656831896,485441171,320672631,355997361,322586502,417377111,903731593,810373372,95448591,687535698,232392038,338006247,147386598,514160573,784910289,531523334,580152868,271057324,974797821,383349998,471455455,905650029,191448635,950043230,849665005,569185714,132288018,485968943,989760754,709464324,811318827,911189980,662429860,165003476,207160723,850272080,19193516,433070600,448560859,915002577,615106523,736959931,629858555,39412184,834612140,305442147,94607892,476400402,465192693,187596630,738629869,198039557,398227733,440349043,608642116,534761505,864263196,808122786,293576285,370870324,380525115,844487186,186780385,919717966,208181695,211138966,59707761,882994816,415120631,568591892,570087801,122386591,538293228,351075718,141386593,70606136,844093258,741148392,687570103,450915891,525967600,638164792,615227000,290032050,23712315,238891980,756930629,115708300,543317898,141659545,278515863,392492643,214194693,773763078,568017731,489890203,375943730,224971579,415908043,745768395,584533225,925121761,127720967,681498771,960082440,147894305,500205011,155438653,316208904,256363993,653707049,649018635,579382605,36489366,463666621,406446663,248599290,260505970,539400006,790457585,848786061,71298634,846522129,331195602,569427230,943319037,203990707,866097371,520733840,502595412,355120155,42477354,150858496,382556324,26255775,39430294,452439855,781423264,99727570,100763,351924858,969746789,138342324,99388715,319382985,685564582,619074730,158428301,752588263,344355077,473135291,750703358,546632798,189235545,312119487,747771667,160168300,55163699,855811091,476621911,481246205,361287484,780170563,425807457,864671585,407302375,594047425,849962522,219982374,884324997,454519178,222529903,228038932,319345198,764180674,722371349,143421061,772757534,61081620,851812257,62323261,484026333,524963928,988642435,604122423,324530856,235694121,711502951,174647276,586542432,388508355,545439378,283180912,59128860,443269598,802857548,597326369,211568546,560955502,98613054,689429451,671540980,199405117,18369949,94553728,556396504,395388699,546269359,342289426,454247272,940269960,782542530,932275950,772416628,637401908,714456960,473935692,379006384,839125015,229254720,632421933,754223720,313936311,155348367,759874595,775048193,531418464,241386662,825618902,64656835,441509660,502980459,485313570,949580258,426621913,773475350,381303631,10604109,615961668,590730800,911373913,789770591,497621451,845518106,745494532,609173,223929798,724707414,289772697,730641039,439118555,830992540,971717906,129312269,824034303,818346050,726230052,236286636,390896900,736587893,446943691,973013833,721956586,543537671,480027248,678751764,765662551,430503320,352634899,720482284,203322883,885840915,788051874,12846425,974026691,810367435,207973353,917986254,96085677,304981397,776940814,14810137,896351027,418228285,660343871,117194391,58051916,465256942,397230088,607192941,243138221,104141099,488802141,729218658,620758829,915525734,656137380,398870464,3552894,651780991,328156605,791156209,522847819,332227752,368819258,629853736,294858402,935735177,705152296,841301499,560409069,18407560,814581305,567192884,849155612,66381705,483541574,757711613,86348174,404143190,359017689,655885378,718909102,244476571,666296897,518827294,947385814,788680717,750880386,89300192,939658724,816892587,991916901,133562661,598003551,57365636,356371730,666660288,711668957,596383931,836757786,906348946,277749793,893346972,993178789,258980085,664095685,672359642,23683697,666765961,865933538,723727864,430271248,14153509,876639841,119246796,950862317,412694542,166453898,430419890,854588241,210183746,672414243,335800047,85274388,777481980,746903064,983237399,304892283,409861098,958100025,539042594,806406636,653158742,154379305,582400436,923791369,776037031,63561200,227200,27139055,697909890,510745491,448446710,560427487,452235305,85291981,870400547,293124094,399526417,523657912,870897292,271619696,409809414,519404337,525379748,336031168,120922874,651673190,818744640,80819832,177908074,660512965,562100211,528593700,141151554,532510884,614473352,523703158,86700095,606406998,636504074,516473448,233986205,187555288,454852283,690038310,745775330,13984621,638928992,827924514,906476321,627802252,594330048,449417198,946376299,967778168,228046542,211256158,45640469,67490921,843994919,962092964,529505418,519817334,500801420,355306994,482912537,689188667,769628970,780757451,485372354,984586556,955283071,558057023,39351907,372488520,721035634,22821715,539567484,383709623,229623805,914054853,741786046,944925493,260924756,944131200,821185686,85992725,498385776,862852577,365399433,445891776,144844072,795115107,570964888,802339143,273434625,899307719,950063791,250058329,437448899,126099549,994603896,852069897,40679045,163897571,800417331,573844382,845324747,369110045,669376220,464539192,871244229,180097050,783961762,514650653,421595617,926576630,230234249,793911252,387574432,862134755,261325220,700581942,854686698,781311551,989573431,668846902,286620803,68732076,410823241,347806182,3710546,447201994,165492466,783952579,599132794,435002029,675660899,192974500,467181939,951815906,966011517,271732643,254819233,382615853,288385826,150221378,434956640,832287395,929523371,378457002,18721719,75939594,939248004,985791247,110889611,98973325,680162098,791113492,877040655,132796958,780845866,458222009,680274435,830324482,510303415,45127202,9593396,423472467,164080809,978049005,859492606,105740546,761564153,592095203,435167325,987409458,590246341,545698710,54809707,473813785,976156282,247421848,385054120,509124932,572586508,184631621,976920164,205202104,466945012,585984746,822676539,124049696,655523681,333604499,61576506,299558493,60647178,255027188,513013245,687264905,133219226,940217882,209883273,672318545,337745690,184540147,525509247,746469058,282187626,518095008,726033973,474190397,274122024,17778407,104480586,177812781,556897335,667534553,266494872,20580789,429288120,978341317,841000712,690219886,545443316,747468503,829317990,922797464,268852516,701311134,93794336,516648540,894787579,162130785,18802854,598063648,722730973,474783298,572481312,288646456,9417510,705508155,251117560,255000911,611600765,51452451,601786019,281848364,966846110,371365144,510747836,896249745,131369188,924874079,524792865,150878616,401218368,604809646,414128192,921109148,83874004,686365947,951189726,17339204,118843212,221907956,166252606,289280567,570557325,258929228,565424559,220496202,855168169,312702764,889069879,83770675,676568476,911835306,366966980,911913327,888651315,765266432,949748239,947897941,736260462,171723473,118203165,557894476,226014761,929547807,663465668,522616448,914765049,103515368,492603901,382159090,164306789,526043806,874921006,990814229,858625392,308289657,939109608,300911082,882188834,894072854,801128164,198932244,320633693,596221539,88806733,518220543,605248247,389890457,387707638,96198994,654752352,323344097,162274446,132540012,43884386,75952960,440692335,861710173,840353870,712107207,926403195,858510234,404062929,308319221,727420556,812172157,838527741,97672928,588817243,443157453,519236258,742725472,600816680,582112789,944370085,113527099,131262155,338273607,636978466,135949048,86939430,982560218,990538244,146367770,669289994,397944318,968839392,27130862,14816472,536304270,135175559,756776069,979700108,344540024,626624699,971855937,379734565,268184825,631069976,263096302,422946587,966937705,373964579,389689490,635114271,482491406,61130862,512389830,454058748,862585148,536413695,815073082,262407044,871027158,419972028,410276192,682930490,203131378,882178204,611244979,82880335,565569374,100979242,201341865,13522445,656650344,579811811,141140416,388181584,528396659,691768978,269277437,503767834,181639530,161737672,432407485,681801805,934567879,113120199,547009847,808696364,216776238,550910697,628633796,472047384,139082540,794721107,204775786,961219646,503828772,899101340,950344691,219524931,429591273,568230304,600462428,974788335,326462018,924723953,149174081,754407717,513889488,524220025,413183565,807564104,233268230,298945855,699423276,586377057,736938876,96901003,558652280,920332958,947624258,656499077,520400328,704752712,93537802,698950194,854682075,758882527,649813813,820104854,656842036,997192540,80693652,642655473,199433017,635829223,658686861,858837721,323931498,520108692,967440262,16298188,568599447,480453758,652436983,358901079,922549255,286620948,434025479,249354811,595249929,992799790,610079262,412503771,112985906,560620606,1999791,43517848,72331375,860390789,865439896,585945270,318925171,308221445,927725870,90623030,269371454,973916221,776146399,76636852,525996827,47601853,675052090,250773643,605717796,292399975,462451693,745967167,233048582,124922823,928534962,754632697,640040635,589532957,608439774,562678643,777031019,857836574,616549151,951137338,869457539,12203212,895977611,409995082,570175991,373576118,818931240,812954549,785608958,973425196,761110830,605394262,681927564,582164772,757997472,3236051,518847840,765305740,635193265,802682111,309531173,369464483,417963874,512136281,646657830,902095992,719565517,610824221,538966369,297049732,786490301,962097479,689397662,181828110,64715667,706665892,906443906,371207392,670259951,698839772,328465200,590899412,595655317,225251534,812563060,205726119,950416648,406374110,167682444,134734257,416160809,369446685,671207347,926862503,150836694,898297307,775303284,390750284,420456503,777717250,249531974,507246187,897793016,123243038,354311524,844607484,361355390,458917832,148652885,72196221,474393256,719609344,825446081,484214558,986143067,2021724,456256501,987968728,337956767,421715818,808324394,352121114,20627214,550810035,396442282,421500094,431259378,632089254,83720763,728618825,528755949,190653155,459947942,178311663,202730044,175996278,948475015,151157393,776860109,856043084,442288825,512624189,894576263,626386199,186223082,725962768,537362942,230818241,705098505,694961137,198202633,758395918,568371855,827035006,702955979,749597072,252826029,629007616,756746959,723418912,842650492,489202171,729172415,836543728,955628901,465708136,724627942,752955441,789147176,752546535,194063767,742277271,681062732,549605890,371646718,298303533,716587308,291819035,990904109,679165875,196790289,956016817,460705431,36816493,1371227,186750319,479357061,668790549,116413897,103081544,373648855,738818850,254396254,97704482,992730814,400370193,282669725,623382436,598598468,725503211,876841326,413357052,341698139,537365037,131887908,921733755,643326077,811059073,66888527,81813643,745118879,765219101,594107137,961681107,94988280,122323278,913964282,515315777,186121391,753682228,218903730,683727788,935342701,948447656,787766402,593335865,161175670,206089514,9265972,893983380,180662822,553866148,614635042,377954898,360493669,402639435,545536442,94569211,995867138,812839220,96251710,592389762,626240693,769642180,483793500,963881106,875552923,573082904,553590813,934901217,693606112,929233603,104753588,840404607,581510533,747859434,640938618,816617255,205948899,493767357,686993038,351035668,195092089,682163677,424361866,288867076,780403020,166263711,270730478,737746468,40324345,493432525,270058132,633001209,930516429,417082693,254923217,425028993,455776363,562977401,397995587,391264552,248761804,603586765,895572013,172304332,870047128,44196884,328148723,548547738,454106647,184191157,920975246,249782337,756806315,832126999,617565070,178791559,176569358,981893077,214713431,9512548,407100406,966769481,970636144,434620890,401176632,659229224,897926775,812499011,982312141,822292124,209185220,513254172,259249325,694048692,728819447,155063958,590374379,178702553,69839250,688500466,245853846,498717018,214932639,807255302,532832726,206813775,604438753,171537667,344831951,268854562,521420254,445142468,633660852,30487850,934529470,986805539,455217117,628395623,439218219,886841851,952198602,646417320,909110574,579530281,748318011,990059684,720646106,596283538,36869559,374468616,270194451,521018445,398004495,311679057,632940868,746673419,439344154,929272009,609131346,348550051,853368975,122601274,541390583,332635800,604634436,545025312,500467586,641437092,195065747,115492434,478629176,676998325,607929245,840513391,238989075,545675855,336667579,717433258,709007028,538771495,115789500,277040488,361496574,362292234,90350811,10703842,610503744,955551903,531225624,111667247,485588010,380450988,930792376,136955678,179940601,730258565,644211597,180045227,690486882,857052777,530897640,414517159,693659719,600490505,911447384,689361523,660233006,872131820,22785986,598295122,549429845,42083207,645211094,880325094,573498428,95576745,930542003,997159143,318671843,336884022,501228241,628342881,182499620,571122286,984933204,684653046,863077101,92011327,735197516,971238469,515667781,21184870,546665013,192662843,320221503,912872591,519304638,287894621,254777303,762407896,986632430,691910625,691121869,553637553,737827945,397783211,534172250,683285246,455428229,445446875,763158179,864356980,606648126,677943367,51182709,167299594,355585204,851305590,229272960,938550316,334954393,368648353,495184757,168690721,209875051,820009741,415869573,445860530,126341029,92079624,650417770,349724742,167846700,29721248,986234083,897376346,5944326,14177511,681214511,752013195,56600160,540582474,85305504,178118518,833733855,609444026,191235276,921316943,577615607,535465765,125797433,451011278,201818382,848416325,322356321,870325825,942165579,368760436,928358816,362977868,514372183,699679224,489438868,568391641,602256609,986724034,625951713,200330749,279510853,904611692,880622164,418817424,927276635,644242276,879128193,191144186,16349825,802311645,875744429,519997825,944003250,311574944,450911513,842599286,151328844,167676984,976583501,219585583,938275847,9180178,323628232,520596013,246570605,674879865,208324160,908408760,717992630,83192485,887296073,830091985,357743440,348687669,89747090,695667017,501550129,128218122,538630412,344500341,174043437,800482096,398918248,351453982,520459660,508647333,164648322,733746295,685762628,257705130,152257980,574286577,767593586,606864282,417113902,703544035,826623144,309194388,399184420,339102112,485553103,205298022,66183426,206570274,558571415,345347115,50044776,24140102,709258738,904866433,622016948,306296738,570701100,410750980,490290566,228312256,802694845,241033847,499708424,540962976,688747333,885525964,12453492,52629002,747376262,787655948,609161660,641849996,315146740,468986506,986137727,7856639,304793660,339404623,844489212,169493305,572698182,294483047,380875755,279304015,687462613,425411433,194250463,561826741,543820666,141040611,509618792,514152544,18043691,746124982,523784809,938934405,360611069,429243438,338950415,184440069,288757115,654107746,428971624,293595306,485312070,100840269,943555571,618424610,97901875,896978562,503100156,315523596,390009965,896842277,755098025,321986922,182854493,904335546,54346776,368633886,400536758,270824027,590552636,886298819,337948637,442815047,40969469,873111668,329492055,696806297,868092787,682858433,92883145,641877204,628010056,749702736,61267399,681762340,690515930,404992495,149953124,121888515,642102746,621696325,709762210,894206476,705041685,320094631,613256880,922608826,574164707,42211004,863484243,37009381,290427489,360639199,754876804,552832615,377921151,711800106,659462803,960952823,400150404,803194741,747656204,28269002,202650897,184368014,301943729,772229432,201733817,639462878,442766456,917236567,676595977,4828913,27742412,200450998,895203988,468644820,506860318,589512887,914426859,796443969,955700864,96013565,223242760,247201836,28523613,963448100,388996457,956987013,924157903,361317325,878375341,364515930,951331588,844935028,99312290,252120579,597875312,502997084,247887509,949565901,632302266,863334664,259132453,948002500,115769108,410428605,752588108,864601803,350904975,944717570,841675473,912851775,525664632,363499606,760830018,349104426,471249782,214690966,136249240,386106792,473173087,758775773,380376404,673388547,642352476,517766499,561113591,877517411,692480145,877170555,672492580,150918856,626835761,101395239,431041064,79010204,387946098,205915125,791289558,286479604,429197372,911853575,767382538,703233596,686734479,924629843,613715994,119874001,243268188,108680015,281033625,293320373,238704768,734267428,778320043,434015404,650018731,203380567,974050704,119168760,958584290,343207027,242690982,59043151,180603269,362509858,436288916,411979514,818595262,162477868,46103520,444491127,500611180,614655064,282276996,445454325,294244422,170060686,35989605,378280605,30283599,142379647,499001900,929479700,178279077,911030963,951714946,73142424,445470188,108327829,806257444,550420138,38849674,103099474,687566609,148572441,843978085,751014876,362935374,72725725,995545226,141660882,563171665,708227862,511775027,27808875,92731251,607372762,73399589,910166483,685253522,488446219,522155616,91463258,476731587,639753891,247981186,269957994,499437132,296702828,537131907,837367380,593532731,703416676,83896827,84507607,163382770,800849725,873753319,325276164,446980066,416031250,158278300,432780531,864527743,953019414,885060228,167056720,617128881,544790642,214365472,178246515,361171991,152140136,433527771,252838170,962123529,327975241,462121020,319990706,254625300,579219013,747850033,807500203,489229659,188245623,49258233,645358475,525395585,564487090,824825671,119789570,172594424,444646650,47831803,569947125,751013465,653251732,764237294,195598586,313768713,694463933,45598162,958995702,571300636,735572831,348150463,283614605,583451793,61645354,693673943,218571773,466144347,452658431,520740880,137568014,502304761,945872252,380750836,393957031,158322114,676031059,826543976,419805966,964069000,349456263,276289970,93157436,977581174,767392528,850465892,831719828,159296724,483327003,148997255,64831584,297604544,413676930,392379593,652065056,897861848,301646030,997018144,947860597,586127367,141132914,582636557,785401610,981902491,9477546,541746088,70176056,56756713,931594570,730936690,446070887,789130440,367169218,194496141,588263247,920658815,241205280,631139708,967888117,673526544,722784722,564137088,82681148,737614098,453580829,431031991,731855896,786132776,893890877,73865136,955841599,428554895,748326201,299605198,109981572,803425994,705427847,885899575,285745288,132512446,725875102,436257701,772990125,337794954,985666919,683064673,465966003,312903219,611909394,941686354,744839640,361377796,41740030,521601319,895789321,997601178,420165548,71669190,49894326,845311081,111814544,827997887,486479404,748642527,416217032,702238722,736129701,168164661,819174186,348173823,576947605,647147337,97650921,453343744,465473991,469558821,427792201,419106303,80681312,447354436,104026740,373236089,596668452,265993025,652001223,355661886,92227572,740840102,596449406,876562026,873988549,36101963,402854704,439462771,157653364,233375217,201284014,524115521,866330650,619145751,768720598,635718056,741830695,320973814,338370884,494956568,77238110,770125368,536223478,698179563,440199517,527390277,489612075,953625169,702418014,468110954,82162730,562948312,460709119,372198178,581087327,36961800};
int qkpow(int a,int b) {
	int res = 1;
	while(b > 0) {
		if(b & 1) res = res *1ll* a % MOD;
		a = a *1ll* a % MOD; b >>= 1; 
	}return res;
}
map<int,int> mp;
int fac[MAXM];
int n,m,i,j,s,o,k;
int a[Bl<<1],cnt;
int a_[Bl],cnt2;
bool f[Bl<<1];
int mu[Bl<<1],h[Bl<<1];
int Fac(int n) {
	if(n <= MAXM-5) return fac[n];
	int ad = n / Bl,ad2 = n % Bl,ad3 = n-ad2+1;
	int as = NUM[ad];
	for(int i = ad3;i <= n;i ++) as = as *1ll* i % MOD;
	return as;
}
int C(int n,int m) {
	if(m < 0 || m > n) return 0;
	return Fac(n) *1ll* qkpow(Fac(m),MOD-2) % MOD *1ll* qkpow(Fac(n-m),MOD-2) % MOD;
}
int main() {
	freopen("subset.in","r",stdin);
	freopen("subset.out","w",stdout);
	fac[0] = fac[1] = 1;
	for(int i = 2;i <= MAXM-5;i ++) fac[i] = fac[i-1] *1ll* i % MOD;
	n = read();m = read();k = read();
	if(k == 0) k = n;
	for(int i = 1;i*i <= n;i ++) {
		if(n % i == 0) {
			a[++ cnt] = i;
			if(n/i != i) a_[++ cnt2] = n/i;
		}
	}
	for(int i = 1;i <= cnt2;i ++) a[++ cnt] = a_[i];
	for(int i = 1;i <= cnt;i ++) {
		mp[a[i]] = i; mu[i] = 1;
	}
	f[1] = 1;
	for(int i = 1;i <= cnt;i ++) {
		if(!f[i]) {
			mu[i] = MOD-1;
			int nn = n / a[i];
			for(int j = 1;j*j <= nn;j ++) {
				if(nn % j == 0) {
					int y = mp[a[i]*j];
					if(y != i) {
						f[y] = 1;
						if(j % a[i]) mu[y] = (MOD-mu[y]) % MOD;
						else mu[y] = 0;
					}
					if(nn/j != j) {
						y = mp[a[i]*(nn/j)];
						f[y] = 1;
						if(nn/j % a[i]) mu[y] = (MOD-mu[y]) % MOD;
						else mu[y] = 0;
					}
				}
			}
		}
		if(!mu[i]) continue;
		int nn = n / a[i];
		for(int j = 1;j*j <= nn;j ++) {
			if(nn % j == 0) {
				int y = mp[a[i]*j];
				if(k % j == 0) (h[y] += mu[i]*1ll*j % MOD) %= MOD;
				if(nn/j != j) {
					y = mp[a[i]*(nn/j)];
					if(k % (nn/j) == 0) (h[y] += mu[i]*1ll*(nn/j) % MOD) %= MOD;
				}
			}
		}
	}
	int ans = 0;
	for(int i = 1;i <= cnt;i ++) {
		if(m % a[i] == 0) {
			int cc = C(n/a[i],m/a[i]);
			if((m/a[i]+m) & 1) cc = (MOD-cc) % MOD;
			(ans += cc *1ll* h[i] % MOD) %= MOD;
		}
	}
	ans = ans *1ll* qkpow(n,MOD-2) % MOD;
	printf("%d\n",ans);
	return 0;
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值