luoguP4449 于神之怒加强版
题意
默认\(n\leqslant m\)。
一波莫反后可得:
\(\sum\limits_{T=1}^{n}\frac{n}{T}\frac{m}{T}\sum\limits_{d|T}d^k\mu(\frac{T}{d})\)
前面显然是可以除法分块的,后面是个积性函数,可以线性筛。
设\(f(x)=\sum\limits_{d|x}d^k\mu(\frac{x}{d})\)
线性筛时\(i\)中不含\(prime_j\)自然好说,考虑\(i\)中含\(prime_j\)怎么办。
设\(g(i)\)表示\(i\)中最小质因子(即\(prime_j\))的幂,即\(prime_j^k\)。
\(i\not=g(i)\)将\(i\)中的\(prime_j\)除去再算即可:
\(f(i*prime_j)=f(\frac{i}{g(i)})*f(g(i)*prime_j)\)
\(i=g(i)\)这时用上面的式子会出现: \(f(i*prime_j)=f(i*prime_j)*f(1)\)
这时考虑代回原式:
\(f(p^c)=\sum\limits_{d|p^c}d^k\mu(\frac{p^c}{d})\)
\(f(p^{c-1})=\sum\limits_{d|p^{c-1}}d^k\mu(\frac{p^{c-1}}{d})\)
发现\(f(p^c)=f(p^c)*(prime_j)^k+(f(1)^k*\mu(p^c))\)(\(f(1)*\mu(p^c)=0\))。
于是就可以线性筛了,注意\(d^k\)也是积性函数。
code:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=5000010;
const ll mod=1000000007;
int T,K,n,m;
int mu[maxn],g[maxn];
ll pw[maxn],f[maxn],sum[maxn];
bool vis[maxn];
vector<int>prime;
inline ll power(ll x,ll k,ll mod)
{
ll res=1;
while(k)
{
if(k&1)res=res*x%mod;
x=x*x%mod;k>>=1;
}
return res;
}
inline void pre_work(int n)
{
vis[1]=1;f[1]=1;mu[1]=1;
for(int i=2;i<=n;i++)
{
//cerr<<i<<endl;
if(!vis[i])prime.push_back(i),pw[i]=power(i,K,mod),f[i]=(pw[i]-1)%mod,g[i]=i,mu[i]=-1;
for(unsigned int j=0;j<prime.size()&&i*prime[j]<=n;j++)
{
vis[i*prime[j]]=1;
pw[i*prime[j]]=pw[i]*pw[prime[j]]%mod;
if(i%prime[j]==0)
{
if(i==g[i])f[i*prime[j]]=f[i]*pw[prime[j]]%mod;//+(pw[1]*mu[i*prime[j]]=0);
else f[i*prime[j]]=f[i/g[i]]*f[g[i]*prime[j]]%mod;
g[i*prime[j]]=g[i]*prime[j];
break;
}
f[i*prime[j]]=f[i]*f[prime[j]]%mod;
g[i*prime[j]]=prime[j];
mu[i*prime[j]]=-mu[i];
}
}
for(int i=1;i<=n;i++)sum[i]=(sum[i-1]+f[i])%mod;
}
inline ll solve(int n,int m)
{
if(n>m)swap(n,m);
ll res=0;
for(int l=1,r;l<=n;l=r+1)
{
r=min(n/(n/l),m/(m/l));
res=(res+1ll*(n/l)*(m/l)%mod*((sum[r]-sum[l-1])%mod+mod)%mod)%mod;
}
return (res%mod+mod)%mod;
}
int main()
{
scanf("%d%d",&T,&K);
pre_work(5000000);
while(T--)
{
scanf("%d%d",&n,&m);
printf("%lld\n",solve(n,m));
}
return 0;
}
luoguP4449 于神之怒加强版的更多相关文章
- 【BZOJ-4407】于神之怒加强版 莫比乌斯反演 + 线性筛
4407: 于神之怒加强版 Time Limit: 80 Sec Memory Limit: 512 MBSubmit: 241 Solved: 119[Submit][Status][Discu ...
- 【BZOJ4407】于神之怒加强版(莫比乌斯反演)
[BZOJ4407]于神之怒加强版(莫比乌斯反演) 题面 BZOJ 求: \[\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)^k\] 题解 根据惯用套路 把公约数提出来 \[\sum ...
- BZOJ 4407 于神之怒加强版 (莫比乌斯反演 + 分块)
4407: 于神之怒加强版 Time Limit: 80 Sec Memory Limit: 512 MBSubmit: 1067 Solved: 494[Submit][Status][Disc ...
- bzoj 4407 于神之怒加强版 (反演+线性筛)
于神之怒加强版 Time Limit: 80 Sec Memory Limit: 512 MBSubmit: 1184 Solved: 535[Submit][Status][Discuss] D ...
- 【BZOJ4407】于神之怒加强版 莫比乌斯反演
[BZOJ4407]于神之怒加强版 Description 给下N,M,K.求 Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行, ...
- [BZOJ4407]于神之怒加强版
BZOJ挂了... 先把程序放上来,如果A了在写题解吧. #include<cstdio> #include<algorithm> #define N 5000010 #def ...
- BZOJ 4407 于神之怒加强版
http://www.lydsy.com/JudgeOnline/problem.php?id=4407 题意: 给下N,M,K.求 思路: 来自:http://blog.csdn.net/ws_y ...
- BZOJ 4407: 于神之怒加强版 [莫比乌斯反演 线性筛]
题意:提前给出\(k\),求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m gcd(i,j)^k\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d|D ...
- ●BZOJ 4407 于神之怒加强版
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4407 题解: 莫比乌斯反演 直接套路化式子 $\begin{align*}ANS&= ...
随机推荐
- 《手把手教你》系列练习篇之6-python+ selenium自动化测试(详细教程)
1. 简介 前面文章我们了解了如何获取元素的text属性值,和判断元素是否显示在页面(is_displayed()方法),本文我们来学习下,判断一个控件是否被选中状态. 2. 验证控件是否被选中 还是 ...
- Bash Shell编程简记
Shell编程简记 经常在linux环境下开发的同学,难免要使用shell的一些命令或者编写小的脚本,我这里也总结和整理下,自己对Shell的理解和常用的一些shell脚本. 按照目录分为如下3个节: ...
- CCNA 之 四 管理和配置CISCO设备
管理和配置CISCO设备 路由器组件 cpu 执行操作系统的指令 随机访问存储器RAM - RAM中内容断电丢失 - 运行操作系统: - 运行配置文件: - IP 路由表: - ARP 缓存; - 数 ...
- ASI和AFN的区别
ASI总结 发送请求的2个对象 1.发送GET请求 ASIHttpRequest 2.发送POST请求 ASIFormDataRequest 二发送请求 1.同步请求 startSynchronous ...
- js实现冒泡排序(bubble sort)快速排序(quick sort)归并排序(merge sort)
排序问题相信大家都比较熟悉了.用js简单写了一下几种常用的排序实现.其中使用了es6的一些语法,并且不仅限于数字--支持各种类型的数据的排序.那么直接上代码: function compare (a, ...
- js杂项积累
主要内容: 一 浏览器重定向Http请求跨域 二 html select标签 可以设置属性multipe,变为多选 三 document.wirte只应在script标签的顶层代码中使用.不能放在函数 ...
- Sql like模糊查询 区分大小写
Sql模糊查询,Like默认是不区分大小写的 使用Like时,怎么支持大小写呢? upper.lower,只能模糊所有的内容,不能区分内容中的大小写. sqlite数据库对text字段默认是大小写敏感 ...
- 用C在GBA上写光线追踪(0)配置开发编译环境
前段时间用C#写了一个光线追踪程序,可以渲染圆球,平面这种基本图形,反射,光照,阴影,都大致尝试做了一下. ↑ C#实现的光线追踪 ↑ GBA上C实现的光线追踪 然而,在我打算继续深入优化的时 ...
- 09-Python-Socket编程
一.Python-Socket编程 1.1.弄懂HTTP.Socket.TCP这几个概念 什么是HTTP协议?浏览器的本质就是一个socket客户端遵循HTTP协议,HTTP协议的本质:通过\r\n分 ...
- 本土化App名稱和icon
本土化app名稱這個容易 第一步配置工程需要本土化的語言. 第二步,新建本土化文件,文件名稱是有要求的,文件名字命名为InfoPlist,且必须是这个名字.這樣系統會自動去讀取該文件中的內容 對新建的 ...