前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BZOJ2693: jzptab(莫比乌斯反演)

BZOJ2693: jzptab(莫比乌斯反演)

作者头像
attack
发布2018-07-27 15:23:49
2140
发布2018-07-27 15:23:49
举报

Time Limit: 10 Sec  Memory Limit: 512 MB

Submit: 2068  Solved: 834

[Submit][Status][Discuss]

Description

Input

一个正整数T表示数据组数

接下来T行 每行两个正整数 表示N、M

Output

T行 每行一个整数 表示第i组数据的结果

Sample Input

1 4 5

Sample Output

122 HINT T <= 10000 N, M<=10000000

HINT

Source

版权所有者: 倪泽堃

Orz gxz

这题好神仙啊,就是把这个换成了多组询问

我们可以继续利用上一个题的公式推

$f(n)$是两个积性函数的乘积,同样也是积性函数

考虑只有一个素因子时$f(n) = n * (1 - n)$

当$n$不为质数时$n = i * p$,此时$n$一定包含$p^2$这个因子,所以$f(n) = p * f(i)$

#include<cstdio>
#include<algorithm>
#define LL long long 
using namespace std;
const int MAXN = 1e7 + 10, mod = 100000009;
int T, N, M;
int tot, vis[MAXN];
LL f[MAXN], prime[MAXN];
void GetF(int N) {
    f[1] = 1;
    for(int i = 2; i <= N; i++) {
        if(!vis[i]) prime[++tot] = i, f[i] = (i - 1ll * i * i  % mod + mod) % mod;
        for(int j = 1; j <= tot && i * prime[j] <= N; j++) {
            vis[i * prime[j]] = 1;
            if(!(i % prime[j])) {
                f[i * prime[j]] = f[i] * prime[j] % mod;
                break;
            } else f[i * prime[j]] = f[i] * f[prime[j]] % mod;
        }
    }
    for(int i = 2; i <= N; i++) f[i] = (f[i - 1] + f[i] + mod) % mod;
}
LL S(LL x) {
    return (x * (x + 1)) / 2 % mod;
}
int main() {
    scanf("%d", &T);
    GetF(1e7 + 1);
    while(T--) {
        int N, M, last;
        LL ans = 0;
        scanf("%d %d", &N, &M);
        if(N > M) swap(N, M);
        for(int i = 1; i <= N; i = last + 1) {
            last = min(N / (N / i), M / (M / i));
            ans = (ans + S(N / i) * S(M / i) % mod * (f[last] - f[i - 1] + mod) % mod) % mod;
        }
        printf("%lld\n", ans);
        
    }
    return 0;
}
/*
2
4 5
123456 654321

*/
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Description
  • Input
  • 一个正整数T表示数据组数
  • Output
  • Sample Input
  • Sample Output
  • HINT
  • Source
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档