网站系统里不能打印,青岛房产备案价格查询官网,四川旅游攻略,网站优化和推广正题
题目链接:https://www.luogu.com.cn/problem/P3704 题目大意 TTT组询问#xff0c;给出n,mn,mn,m求∏i1n∏j1mFbigcd(i,j)\prod_{i1}^n\prod_{j1}^mFbi_{gcd(i,j)}i1∏nj1∏mFbigcd(i,j) 其中FbixFbi_xFbix表示第xxx项斐波那契数列。 解题思路
答案就是∏x1nFb…正题
题目链接:https://www.luogu.com.cn/problem/P3704 题目大意
TTT组询问给出n,mn,mn,m求∏i1n∏j1mFbigcd(i,j)\prod_{i1}^n\prod_{j1}^mFbi_{gcd(i,j)}i1∏nj1∏mFbigcd(i,j) 其中FbixFbi_xFbix表示第xxx项斐波那契数列。 解题思路
答案就是∏x1nFbix∑i1n∑j1m[gcd(i,j)x]\prod_{x1}^nFbi_x^{\sum_{i1}^n\sum_{j1}^m[gcd(i,j)x]}x1∏nFbix∑i1n∑j1m[gcd(i,j)x] 然后上反演就是∏x1nFbix∑x∣d⌊nd⌋⌊md⌋μ(dx)\prod_{x1}^nFbi_x^{\sum_{x|d}\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor\mu(\frac{d}{x})}x1∏nFbix∑x∣d⌊dn⌋⌊dm⌋μ(xd) 同样是提出来∏d1n(∏x∣dnFbixμ(dx))⌊nd⌋⌊md⌋\prod_{d1}^n(\prod_{x|d}^nFbi_x^{\mu(\frac{d}{x})})^{\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor}d1∏n(x∣d∏nFbixμ(xd))⌊dn⌋⌊dm⌋ 然后预处理∏x∣dnFbixμ(dx)\prod_{x|d}^nFbi_x^{\mu(\frac{d}{x})}∏x∣dnFbixμ(xd)的前缀积再整除分块即可
时间复杂度O(Tnm)O(T\sqrt{nm})O(Tnm) codecodecode
#includecstdio
#includecstring
#includealgorithm
#define ll long long
using namespace std;
const ll N1e610,P1e97;
ll T,n,m,cnt,ans;bool v[N];
ll mu[N],f[N],g[N],pri[N],inv[N];
ll power(ll x,ll b){ll ans1;while(b){if(b1)ansans*x%P;xx*x%P;b1;}return ans;
}
void Prime(){mu[1]f[1]inv[1]g[0]g[1]1;for(ll i2;iN;i){if(!v[i])pri[cnt]i,mu[i]-1;g[i]1;for(ll j1;jcnti*pri[j]N;j){v[i*pri[j]]1;if(i%pri[j]0)break;mu[i*pri[j]]mu[i]*mu[pri[j]];}}for(ll i2;iN;i)f[i](f[i-1]f[i-2])%P,inv[i]power(f[i],P-2);for(ll i1;iN;i){if(!mu[i])continue;for(ll ji;jN;ji){if(mu[i]1)(g[j]*f[j/i])%P;else (g[j]*inv[j/i])%P;}}inv[1]inv[0]1;for(ll i2;iN;i)g[i]g[i]*g[i-1]%P,inv[i]power(g[i],P-2);return;
}
int main()
{Prime();scanf(%lld,T);while(T--){scanf(%lld%lld,n,m);ans1;if(nm)swap(n,m);for(ll l1,r;ln;lr1){rmin(n/(n/l),m/(m/l));ll mulg[r]*inv[l-1]%P;ansans*power(mul,(n/l)*(m/l)%(P-1))%P;}printf(%lld\n,ans);}
}