题意:求\(\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)^k%1e9+7\)
题解:考虑枚举gcd,原式可化简为\(\sum_{d=1}^{n}d^k\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]\)后面部分很明显是最基础的莫比乌斯反演,
那么有\(\sum_{d=1}^{n}d^k\sum_{x=1}^{\lfloor \frac{n}{d} \rfloor}\mu(x)*{\lfloor \frac{n}{d*x} \rfloor}*{\lfloor \frac{m}{d*x} \rfloor}\)
考虑枚举t=dx,(这里的套路很重要!!!*),那么有\(\sum_{t=1}^n{\lfloor \frac{n}{t} \rfloor}*{\lfloor \frac{m}{t} \rfloor}\sum_{d|t}d^k*\mu({\frac{t}{d}})\)
后面是一个积性函数可以O(n)预处理,前面可以分块,这里假设后面的积性函数是\(f(n)=\sum_{d|n}d^k*\mu({\frac{n}{d}})\)
\(f(n)=\prod_{i=1}^kf(p_i^{x_i})=\prod_{i=1}^k\mu(1)*p_i^{k*x_i}+\mu(p_i)*p_i^{k*(x_i-1)}=\prod_{i=1}^kp_i^{k*(x_i-1)}*(p_i^k-1)\)
这里第二步其他项没有的情况是\(\mu\)函数质因子两个以上就是0了,然后f(n)可以在线性筛的时候处理,可以先把素数的k次幂处理出来

/**************************************************************Problem: 4407User: walfyLanguage: C++Result: AcceptedTime:19252 msMemory:103832 kb
****************************************************************///#pragma GCC optimize(2)
//#pragma GCC optimize(3)
//#pragma GCC optimize(4)
//#pragma GCC optimize("unroll-loops")
//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast,no-stack-protector")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#include<bits/stdc++.h>
#define fi first
#define se second
#define db double
#define mp make_pair
#define pb push_back
#define pi acos(-1.0)
#define ll long long
#define vi vector<int>
#define mod 1000000007
#define ld long double
#define C 0.5772156649
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#define pll pair<ll,ll>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define pii pair<int,int>
//#define cd complex<double>
#define ull unsigned long long
#define base 1000000000000000000
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define fin freopen("a.txt","r",stdin)
#define fout freopen("a.txt","w",stdout)
#define fio ios::sync_with_stdio(false);cin.tie(0)
template<typename T>
inline T const& MAX(T const &a,T const &b){return a>b?a:b;}
template<typename T>
inline T const& MIN(T const &a,T const &b){return a<b?a:b;}
inline void add(ll &a,ll b){a+=b;if(a>=mod)a-=mod;}
inline void sub(ll &a,ll b){a-=b;if(a<0)a+=mod;}
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll qp(ll a,ll b){ll ans=1;while(b){if(b&1)ans=ans*a%mod;a=a*a%mod,b>>=1;}return ans;}
inline ll qp(ll a,ll b,ll c){ll ans=1;while(b){if(b&1)ans=ans*a%c;a=a*a%c,b>>=1;}return ans;}using namespace std;const double eps=1e-8;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int N=5000000+10,maxn=400000+10,inf=0x3f3f3f3f;int prime[N],cnt,k;
ll f[N],qk[N];
bool mark[N];
void init()
{f[1]=1;for(int i=2;i<N;i++){if(!mark[i])prime[++cnt]=i,qk[cnt]=qp(i,k),f[i]=(qk[cnt]-1+mod)%mod;for(int j=1;j<=cnt&&i*prime[j]<N;j++){mark[i*prime[j]]=1;if(i%prime[j]==0){f[i*prime[j]]=f[i]*qk[j]%mod;break;}f[i*prime[j]]=f[i]*(qk[j]-1+mod)%mod;}}for(int i=1;i<N;i++)add(f[i],f[i-1]);
}
int main()
{int T;scanf("%d%d",&T,&k);init();while(T--){int n,m;scanf("%d%d",&n,&m);if(n>m)swap(n,m);ll ans=0;for(int i=1,j;i<=n;i=j+1){j=min(n/(n/i),m/(m/i));ll te=1ll*(f[j]-f[i-1])*(n/i)%mod*(m/i)%mod;te=(te+mod)%mod;add(ans,te);}printf("%lld\n",ans);}return 0;
}
/****************************************/

转载于:https://www.cnblogs.com/acjiumeng/p/9726479.html

bzoj4407: 于神之怒加强版相关推荐

  1. bzoj4407 于神之怒加强版(莫比乌斯反演+线性筛)

    4407: 于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MB Submit: 355  Solved: 174 [Submit][Status][Dis ...

  2. BZOJ 4407: 于神之怒加强版

    4407: 于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MB Submit: 560  Solved: 271 [Submit][Status][Dis ...

  3. BZOJ 4407 于神之怒加强版

    题目链接:于神之怒加强版 这个式子还是很妙的,只是我已经思维僵化了 \begin{aligned}  &\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^k \\ =& ...

  4. P4449 于神之怒加强版

    P4449 于神之怒加强版 推式子 ∑i=1n∑j=1ngcd(i,j)h\sum_{i = 1} ^{n} \sum_{j = 1} ^{n} gcd(i, j) ^ h i=1∑n​j=1∑n​g ...

  5. 【LG-P4449】于神之怒加强版

    P4449 于神之怒加强版 给定 n , m , k n,m,k n,m,k,计算 ∑ i = 1 n ∑ j = 1 m gcd ⁡ ( i , j ) k \sum_{i=1}^n \sum_{j ...

  6. 于神之怒加强版 [Bzoj 4407]

    题目地址请点击-- 于神之怒加强版 Description 给定 NN , MM , KK . Input 输入有多组数据,输入数据的第一行两个正整数 TT , KK,代表有 TT 组数据,KK 的意 ...

  7. GMOJ 4161 / Luogu P4449 于神之怒 (加强版) 题解

    于神之怒 (加强版) 题解 Description 求 F ( n , m ) = ∑ i = 1 n ∑ j = 1 m gcd ⁡ ( i , j ) k F(n,m)=\sum_{i=1}^n\ ...

  8. 【BZOJ4407】于神之怒加强版

    题面 题目分析 \[ \begin{split} \sum\limits_{i=1}^n\sum\limits_{j=1}^mgcd(i,j)^k&=\sum\limits_{d=1}^nd^ ...

  9. P4449-于神之怒加强版【莫比乌斯反演】

    正题 题目链接:https://www.luogu.com.cn/problem/P4449 题目大意 TTT组询问给出n,mn,mn,m求∑i=1n∑j=1mgcd(i,j)k\sum_{i=1}^ ...

  10. 2017.9.26 于神之怒加强版 失败总结

    .这个题直接上反演可以化成: 然后后面的部分是可以预处理的,最简单的预处理是nlogn的,理论能过,但不知为何死活过不了. 所以就需要o(n)来求后面函数的值 设f=∑d|t  mu(d)*(T/d) ...

最新文章

  1. PHP中MD5函数漏洞
  2. 【转】 Android WebView内容宽度自适应
  3. python计算1到100的和-Python3基础 sum,range 计算1到100的和
  4. C++和C语言中enum 如何使用
  5. 很详细的Nginx配置说明
  6. 基础三:控制执行流程
  7. Oracle打开虚拟机闪退,虚拟机上启动Oracle服务为什么自动停止,怎么处理?
  8. webpack的多文件打包问题
  9. opencv 绘制图像直方图,实现直方图均衡化
  10. 二分图最大匹配的经典匈牙利算法
  11. 4.php 注册树模式
  12. simhash实现html页面相似度,基于改进的Simhash算法的相似文档识别技术
  13. 轻松下载网易云音乐中的歌曲
  14. 移动硬盘文件,图标变白解决方案
  15. python抢注最新到期删除域名!
  16. APP视频播放异常,非APP层导致异常基础排查
  17. 华为中兴为何对未来信心十足?
  18. 基因数据分析主流软件与基因预测方法步骤-搬运工
  19. nuke11安装教程 nuke11破解教程
  20. 香港公司银行开户需要注意。

热门文章

  1. python 知乎接口_ZhihuVAPI 是一个可以让你以一种优雅的形式调用知乎数据的 Python 包....
  2. Python(二十五):排序、反转
  3. Neo4j之下载安装:windows
  4. linux opencl安装方法,如何在Ubuntu上安装libOpenCL.so
  5. 买什么手提电脑好_玉米种子买什么品种好?
  6. POJ 3461题解(kmp算法)文本串和子串匹配
  7. Pytorch之模型加载/保存
  8. 翻译:使用 AWS Deep Racer 的日志分析工具
  9. 翻译: Octave 入门教程
  10. 算法:Gray Code 格雷码