loj #2000. 「SDOI2017」數字表格 (莫比烏斯)
程式碼:
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN=1e6+5; const int MOD=1e9+7; bool check[MAXN+10]; int prime[MAXN+10],f[MAXN][2],sum[MAXN],in[MAXN]; int mu[MAXN+10]; ll qpow(ll a,ll b) { ll ans=1;a%=MOD; for(ll i=b;i;i>>=1,a=a*a%MOD) if(i&1)ans=ans*a%MOD; return ans; } ll inv(ll x) { return qpow(x,MOD-2); } void Moblus() { memset(check,false,sizeof(check)); mu[1]=1;sum[1]=1; int tot=0; f[1][0]=1,f[0][0]=0; f[1][1]=1,f[0][1]=1; for(int i=2;i<MAXN;i++) { f[i][0]=(f[i-1][0]+f[i-2][0])%MOD; f[i][1]=inv(f[i][0]); } for(int i=2;i<=MAXN;i++) { sum[i]=1; if(!check[i]) { prime[tot++]=i; mu[i]=-1; } for(int j=0;j<tot;j++) { if(i*prime[j]>MAXN) break; check[i*prime[j]]=true; if(i%prime[j]==0) { mu[i*prime[j]]=0; break; } else { mu[i*prime[j]]=-mu[i]; } } } sum[0]=in[0]=1; for(int i=1;i<MAXN;i++) { for(int j=i;j<MAXN;j+=i) { if(mu[j/i]==-1) sum[j]=1LL*sum[j]*f[i][1]%MOD; if(mu[j/i]==1) sum[j]=1LL*sum[j]*f[i][0]%MOD; } } for(int i=1;i<MAXN;i++) { sum[i]=1LL*sum[i-1]*sum[i]%MOD; in[i]=inv(sum[i]); } } ll cal(int n,int m) { ll ret=1; int last; if(n<m) swap(n,m); for(int i=1;i<=m;i=last+1) { last=min(n/(n/i),m/(m/i)); ret=1LL*ret*qpow(1LL*sum[last]*in[i-1]%MOD,1LL*(n/i)*(m/i))%MOD; } return ret; } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); Moblus(); int T; scanf("%d",&T); while(T--) { int n,m; scanf("%d%d",&n,&m); printf("%lld\n",cal(n,m)); } return 0; }
相關推薦
loj #2000. 「SDOI2017」數字表格 (莫比烏斯)
程式碼: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN=1e
【BZOJ 4816】 4816: [Sdoi2017]數字表格 (莫比烏斯)
Doris剛剛學習了fibonacci數列。用f[i]表示數列的第i項,那麼 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老師的超級計算機生成了一個n×m的表格,第i行第j列的格子中的數是f[gcd(i,j)],其中gcd(i,j)表示i, j的最大公約數。
Crash的數字表格(莫比烏斯反演)
轉化 com -m line sqrt spa 輸出 格子 但是 Crash的數字表格 Description 今天的數學課上,Crash小朋友學習了最小公倍數(Least Common Multiple)。對於兩個正整數a和b,LCM(a, b)表示能同時被a和b整除的最
bzoj2154 Crash的數字表格(莫比烏斯反演)
Description 今天的數學課上,Crash小朋友學習了最小公倍數(Least Common Multiple)。對於兩個正整數a和b,LCM(a, b)表示能同時被a和b整除的最小正整數。例如,LCM(6, 8) = 24。回到家後,Crash還在想著課上學的東西,為了研究最
洛谷3704 [SDOI2017] 數字表格 【莫比烏斯反演】
ont nbsp 產生 ID IV mod return esp SQ 題目分析: 比較有意思,但是套路的數學題。 題目要求$ \prod_{i=1}^{n} \prod_{j=1}^{m}Fib(gcd(i,j)) $. 註意到$ gcd(i,j) $有大量重復,采用莫比
[SDOI2017]數字表格【莫比烏斯+數論分塊】
%d true urn mes clu 題意 GC scanf ont 一句話題意: 求: $N=min(n,m)$ $\prod_{d=1}^{N}\prod_{i=1,j=1}^{n,m}f[d]*[gcd(i,j)=d]$ 把$f[d]$提出來: $=\p
【BZOJ4815】[CQOI2017]小Q的表格(莫比烏斯反演,分塊)
【BZOJ4815】[CQOI2017]小Q的表格(莫比烏斯反演,分塊) 題面 BZOJ 洛谷 題解 神仙題啊。 首先\(f(a,b)=f(b,a)\)告訴我們矩陣只要算一半就好了。 接下來是\(b*f(a,a+b)=(a+b)*f(a,b)\) 這個式子怎麼看呢? \[\begin{aligned}
BZOJ2154/BZOJ2693/Luogu1829 Crash的數字表格/JZPFAR 莫比烏斯反演
turn sin pre tps git mes mat lcm get 傳送門——Luogu 傳送門——BZOJ2154 BZOJ2693是權限題 其中JZPFAR是多組詢問,Crash的數字表格是單組詢問 先推式子(默認\(N \leq M\),所有分數下取整) \(
HDU6053(莫比烏斯)
表示不懂啊,。挖個坑先 題意:求n個數,分別比給定n個數小,他們不是互質的情況有多少種。 題解::莫比烏斯容斥,,,,, #include<stdio.h> #include<std
LOJ #528. 「LibreOJ β Round #4」求和 (莫比烏斯函式)
題意 計算 ∑i=1n∑j=1mμ2(gcd(i,j))∑i=1n∑j=1mμ2(gcd(i,j)) (mod(mod 998244353)998244353) 題解 ∑d=1nμ2(d)
CO-PRIME(初探 莫比烏斯)NYOJ1066(經典)gcd(a,b)=1
put size 兩個 test hat ott == clas otto CO-PRIME 時間限制:1000 ms | 內存限制:65535 KB 難度:3 描寫敘述 This problem is so easy! Can you solve it
BZOJ 2301: [HAOI2011]Problem b(莫比烏斯反演)
計算 algo cto ref blog image get txt += http://www.lydsy.com/JudgeOnline/problem.php?id=2301 題意:對於給出的n個詢問,每次求有多少個數對(x,y),滿足a≤x≤b,c&l
SPOJ - PGCD Primes in GCD Table(莫比烏斯反演)
cnblogs -s def problems 前綴和 ret mage () eof http://www.spoj.com/problems/PGCD/en/ 題意: 給出a,b區間,求該區間內滿足gcd(x,y)=質數的個數。 思路: 設f(n)為 gc
hdu 1695 GCD(莫比烏斯入門)
技術分享 sin urn cas str 由於 ons pre () 題意:求a<=x<=b ,x<=y<=d,中gcd(x,y)==k的數對個數 思路:題目可以轉化成求1<=x<=b/k,1<=y<=d/k中gcd(x,y)
數論18——反演定理(莫比烏斯反演)
技術分享 滿足 urn spa isp name 角速度 我們 組成 莫比烏斯反演也是反演定理的一種 既然我們已經學了二項式反演定理 那莫比烏斯反演定理與二項式反演定理一樣,不求甚解,只求會用 莫比烏斯反演長下面這個樣子(=?ω?=) d|n,表示
【HDU1695】GCD(莫比烏斯反演)
重復 min put clas 題解 iostream fine har clu 【HDU1695】GCD(莫比烏斯反演) 題面 題目大意 求\(a<=x<=b,c<=y<=d\) 且\(gcd(x,y)=k\)的無序數對的個數 其中,你可以假定\(
【Luogu3455】【POI2007】ZAP-Queries(莫比烏斯反演)
stream bre 似的 string 獲得 計算 getc ans contain 【Luogu3455】【POI2007】ZAP-Queries(莫比烏斯反演) 題面 題目描述 FGD正在破解一段密碼,他需要回答很多類似的問題:對於給定的整數a,b和d,有多少正整數對
【CF900D】Unusual Sequences 容斥(莫比烏斯反演)
div blog mic names include sin 題意 方案 ace 【CF900D】Unusual Sequences 題意:定義正整數序列$a_1,a_2...a_n$是合法的,當且僅當$gcd(a_1,a_2...a_n)=x$且$a_1+a_2+...
【BZOJ3309】DZY Loves Math(莫比烏斯反演)
namespace ... ++ bre getchar stream 那種 getc 分解質 【BZOJ3309】DZY Loves Math(莫比烏斯反演) 題面 求 \[\sum_{i=1}^a\sum_{j=1}^bf(gcd(a,b))\] 其中,\(f(x)\)
bzoj3994: [SDOI2015]約數個數和(莫比烏斯反演+分塊)
put name 一行 AI algorithm scan space 代碼 print www.cnblogs.com/shaokele/ bzoj3994: [SDOI2015]約數個數和 Time Limit: 20 Sec Memory Limit: 1