link

给定n,m,k,计算\(\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^k\)对1000000007取模的结果

多组数据,T<=2000,1<=N,M,K<=5000000

推式子

\(\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^k\)

\(=\sum_{p=1}^np^k\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=p]\)

\(=\sum_{p=1}^np^{k}\sum_{i=1}^{n/p}\sum_{j=1}^{m/p}[\gcd(i,j)=1]\)

\(=\sum_{p=1}^np^{k}\sum_{i=1}^{n/p}\sum_{j=1}^{m/p}\sum_{d|i,d|j}\mu(d)\)

\(=\sum_{p=1}^np^{k}\sum_{d=1}^n\mu(d)\lfloor\frac n{dp}\rfloor\lfloor\frac m{dp}\rfloor\)

\(=\sum_{q=1}^n\sum_{p|q}p^{k}\mu(\frac qp)\lfloor\frac n{q}\rfloor\lfloor\frac m{q}\rfloor\)

注意这里求得是个数,不需要提出\(p^2\)和\(d^2\),我式子推错了两次。。。

还是枚举倍数对于所有q处理\(\sum_{p|q}p^{k}\mu(\frac qp)\),然后打数论分块

注意这里如果定义p为1e9+7就不要再用p了。。。

#include <cstdio>
#include <functional>
using namespace std; int n, prime[5000010], mu[5000010], tot, fuck = 5000000, p = 1000000007;
int s[5000010];
bool vis[5000010]; int qpow(int x, int y)
{
int res = 1;
while (y > 0)
{
if (y & 1) res = res * (long long)x % p;
x = x * (long long)x % p;
y >>= 1;
}
return res;
} int main()
{
int t, k; scanf("%d%d", &t, &k);
mu[1] = 1;
for (int i = 2; i <= fuck; i++)
{
if (vis[i] == 0) prime[++tot] = i, mu[i] = -1;
for (int j = 1; j <= tot && i * prime[j] <= fuck; j++)
{
vis[i * prime[j]] = true;
if (i % prime[j] == 0) break;
mu[i * prime[j]] = -mu[i];
}
}
for (int pp = 1; pp <= fuck; pp++)
{
int sb = qpow(pp, k);
for (int q = pp, d = 1; q <= fuck; q += pp, d++)
s[q] = (s[q] + sb * mu[d]) % p;
}
for (int i = 1; i <= fuck; i++)
{
// printf("s[%d] = %d\n", i, s[i]);
s[i] = (s[i] + s[i - 1]) % p;
}
while (t --> 0)
{
int n, m, ans = 0;
scanf("%d%d", &n, &m); if (n > m) swap(n, m);
for (int i = 1, j; i <= n; i = j + 1)
j = min(n / (n / i), m / (m / i)), ans = (ans + (s[j] - s[i - 1]) * (long long)(n / i) % p * (m / i) % p) % p;
if (ans < 0) ans += p;
printf("%d\n", ans);
}
return 0;
}

56行,交上去一遍A

luogu4449 于神之怒加强版(莫比乌斯反演)的更多相关文章

  1. 【BZOJ-4407】于神之怒加强版 莫比乌斯反演 + 线性筛

    4407: 于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MBSubmit: 241  Solved: 119[Submit][Status][Discu ...

  2. BZOJ 4407 于神之怒加强版 (莫比乌斯反演 + 分块)

    4407: 于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MBSubmit: 1067  Solved: 494[Submit][Status][Disc ...

  3. BZOJ4407 于神之怒加强版 - 莫比乌斯反演

    题解 非常裸的莫比乌斯反演. 但是反演完还需要快速计算一个积性函数(我直接用$nlogn$卷积被TLE了 推荐一个博客 我也不想再写一遍了 代码 #include<cstring> #in ...

  4. 【bzoj4407】于神之怒加强版 莫比乌斯反演+线性筛

    题目描述 给下N,M,K.求 输入 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. 输出 如题 ...

  5. 【BZOJ4407】于神之怒加强版 莫比乌斯反演

    [BZOJ4407]于神之怒加强版 Description 给下N,M,K.求 Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行, ...

  6. 洛谷 - P4449 - 于神之怒加强版 - 莫比乌斯反演

    https://www.luogu.org/problemnew/show/P4449 \(F(n)=\sum\limits_{i=1}^{n}\sum\limits_{i=1}^{m} gcd(i, ...

  7. BZOJ 4407: 于神之怒加强版 [莫比乌斯反演 线性筛]

    题意:提前给出\(k\),求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m gcd(i,j)^k\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d|D ...

  8. BZOJ4407: 于神之怒加强版(莫比乌斯反演 线性筛)

    Description 给下N,M,K.求 感觉好迷茫啊,很多变换看的一脸懵逼却又不知道去哪里学.一道题做一上午也是没谁了,, 首先按照套路反演化到最后应该是这个式子 $$ans = \sum_{d ...

  9. BZOJ.4407.于神之怒加强版(莫比乌斯反演)

    题目链接 Description 求\[\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^K\ \mod\ 10^9+7\] Solution 前面部分依旧套路. \[\begin{ ...

随机推荐

  1. Cassandra 学习三 安装

    1: 下载Cassandra 2  解压 3   设置环境变量  4 修改cassandra里的conf目录下配置文件            配置文件地址是   D:\cassandra\apache ...

  2. 卸载驱动时,没有/lib/modules目录

    卸载驱动时,没有/lib/modules目录,怎么办? 答:没有这个目录,就创建这个目录! #rmmod  spi_oled_drv #rmmod:  chdir (/lib/modules): no ...

  3. C++11 引用叠加规则和模板参数类型推导规则

    http://zm8.sm-img2.com/?src=http%3A%2F%2F***%2FArticle%2F38320&uid=57422b713ac761e653af7b327bfd9 ...

  4. web 应用 及 补充

    Highcharts 绘图配置 的函数及参数 web页面文本框修饰器 --- KindEditor web页面 之 超人性的点赞与狂踩 web页面 之 图片上传 web页面 之 评论盖楼 jQuery ...

  5. Apache Continuum 远程命令执行漏洞

    这个是apache现在不维护的服务了. 服务使用了struts2框架,目前测试是使用的最新版.

  6. ansible for devops 读书笔记第二章Ad-Hoc Commands

    参数 参数 说明 -a ‘Arguments’, —args=’Arguments’ 命令行参数 -m NAME, —module-name=NAME 执行模块的名字,默认使用 command 模块, ...

  7. 最全SDWebImage-3.8版本源码阅读详解

    一.前言 SDWebImage,非常友好的网络图片加载第三方框架,在GitHub中已经获得了15000++的star,链接地址:https://github.com/rs/SDWebImage 本人分 ...

  8. 一些API的用法

    //1.init初始化 NSString * str1 = [[NSString alloc] init]; NSLog(@"str1 = %@",str1); //2.initW ...

  9. zabbix启动web界面提示:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    问题 zabbix启动web界面提示: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' ( ...

  10. JavaScript基础笔记集合(转)

    JavaScript基础笔记集合   JavaScript基础笔记集合   js简介 js是脚本语言.浏览器是逐行的读取代码,而传统编程会在执行前进行编译   js存放的位置 html脚本必须放在&l ...