博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
莫比乌斯反演初步与实际应用
阅读量:7292 次
发布时间:2019-06-30

本文共 1326 字,大约阅读时间需要 4 分钟。

clipboard.png

clipboard.png

clipboard.png

clipboard.png

#include 
#include
#include
#include
using namespace std ;typedef long long LL ;const int MAXN = 10000010 ;long long T, N, M, V[MAXN], P[MAXN], Mu[MAXN], Tot ;long long S[MAXN], Ans, G[MAXN] ;inline long long Read() { long long X = 0, F = 1 ; char ch = getchar() ; while (ch > '9' || ch < '0') F = (ch == '-' ? - 1 : 1), ch = getchar() ; while (ch >= '0' && ch <= '9') X=(X<<1)+(X<<3)+(ch^48), ch = getchar() ; return X * F ;}inline void MU() { memset(V, 0, sizeof(V)) ; Mu[1] = 1 ; Tot = 0 ; for (int i = 2 ; i < MAXN ; i ++) { if (! V[i]) P[Tot ++] = i, Mu[i] = - 1, G[i] = 1 ; for (int j = 0 ; j < Tot && i * P[j] < MAXN ; j ++) { V[i * P[j]] = 1 ; if (i % P[j]) Mu[i * P[j]] = - Mu[i], G[i * P[j]] = Mu[i] - G[i] ; else { Mu[i * P[j]] = 0 ; G[i * P[j]] = Mu[i] ; break ; } } } for (int i = 1 ; i < MAXN ; i ++) S[i] = S[i - 1] + G[i] ;}int main() { MU() ; T = Read() ; while (T --) { Ans = 0 ; N = Read(), M = Read() ; for (int i = 1, j ; i <= min(N, M) ; i = j + 1) { j = min(N / (N / i), M / (M / i)) ; Ans += (N / i) * (M / i) * (S[j] - S[i - 1]) ; } printf("%lld\n", Ans) ; }}

转载地址:http://xrgjm.baihongyu.com/

你可能感兴趣的文章
.NET跨平台:在Linux Ubuntu上编译coreclr/corefx/dnx(20150617)
查看>>
[CQOI2016]手机号码
查看>>
Eclipse CDT 配置C /C ++ 标准库 (UBUNTU 12 )
查看>>
面霸吕国栋之:整理的一些面试题
查看>>
转 Python爬虫入门五之URLError异常处理
查看>>
转 Python执行系统命令的方法
查看>>
CSS 折角效果
查看>>
个人作业3---个人总结
查看>>
[分享]ip地址爬取过滤的shell
查看>>
差分数组
查看>>
Shiro 加密helloWorld
查看>>
关于安装sql2012出现的netfx3功能问题
查看>>
基础关3
查看>>
tar 解压缩
查看>>
(转)Sharepoint学习笔记—Debug--寻找 WSS_Logging下的ULSTraceLog
查看>>
数据库命令大全(也不是很全哈)
查看>>
鼠标变小手的方式
查看>>
20111124
查看>>
HierarchyId 与.Net Framework 4.5.3报错
查看>>
强大的ldd
查看>>