bzoj2693: jzptab
来源:互联网 发布:c 面向对象编程题 编辑:程序博客网 时间:2024/06/06 18:07
链接
http://www.lydsy.com/JudgeOnline/problem.php?id=2693
题解
网上的题解都和
令
沿用上一道题中的结论
来变一下形
令
令
令
最后每次询问直接分块
代码
//线性筛+莫比乌斯反演#include <cstdio>#include <algorithm>#define maxn 10000001#define ll long long#define mod 100000009llusing namespace std;ll f[maxn], s2[maxn];int mu[maxn], prime[maxn/10], inv[maxn];bool mark[maxn];void shai(){ int i, j; for(inv[1]=1,i=2;i<maxn;i++)inv[i]=(ll)(mod-mod/i)*(inv[mod%i])%mod; mu[1]=f[1]=1; for(i=2;i<maxn;i++) { f[i]%=mod; if(!mark[i]){prime[++prime[0]]=i;mu[i]=-1;f[i]=inv[i]+mu[i];} for(j=1;j<=prime[0] and i*prime[j]<maxn;j++) { mark[i*prime[j]]=1; if(i%prime[j]==0) { mu[i*prime[j]]=0; f[i*prime[j]]=f[i]*inv[prime[j]]; break; } mu[i*prime[j]]=-mu[i]; f[i*prime[j]]=f[i]*f[prime[j]]; } } for(i=1;i<maxn;i++)f[i]=(f[i]*i*i+f[i-1])%mod;}inline ll g(ll x){return x*(x+1)/2%mod;}inline ll s(ll n, ll m, ll x){return x*x%mod*g(n/x)%mod*g(m/x)%mod;}void solve(int N, int M){ if(N>M)swap(N,M); int last, i; ll ans=0; for(i=1;i<=N;i=last+1) { last=min(N/(N/i),M/(M/i)); ans=(ans+g(N/i)%mod*g(M/i)%mod*(f[last]-f[i-1]))%mod; } printf("%lld\n",(ans+mod)%mod);}int main(){ int N, M, T; shai(); for(scanf("%d",&T);T;T--) { scanf("%d%d",&N,&M); solve(N,M); } return 0;}
0 0
- bzoj2693: jzptab
- BZOJ2693: jzptab
- bzoj2693 jzptab
- jzptab[bzoj2693]
- bzoj2693 jzptab
- bzoj2693: jzptab
- bzoj2693: jzptab
- BZOJ2693: jzptab
- 【BZOJ2693】jzptab
- 【bzoj2693】jzptab【反演】
- BZOJ2693——jzptab
- [bzoj2693&bzoj2194]Crash的数字表格&jzptab
- 【莫比乌斯反演】[HYSBZ/BZOJ2693]jzptab
- [BZOJ2693]jzptab(莫比乌斯反演)
- 【BZOJ2693】jzptab(莫比乌斯反演)(数学)
- NKOJ3958(CQOI2015)(BZOJ2693) JZPTAB(莫比乌斯反演)
- 【NKOJ3958/BZOJ2693】【莫比乌斯反演】jzptab
- bzoj2693
- 线段树/莫队——BZOJ1878/Luogu1972 [SDOI2009]HH的项链
- cogs 魔术球问题(简化版)
- H5 video在微信中踩坑记
- bzoj2466 [中山市选2009]树
- 简单的两数交换
- bzoj2693: jzptab
- apt-get update出现404 Not Found
- svn回到历史的某个版本
- Octotree 神器 tips
- SLAM算法解析:抓住视觉SLAM难点,了解技术发展大趋势
- Vmware添加已配置好的虚拟机
- 最长回文
- windows编译 ffmpeg 3.2.4(3)
- CSS,font-family,好看常用的中文字体