【HDU 6428】Calculate 莫比乌斯反演+线性筛
题解
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 1LL<<30;
const int N = 10000000;
int prime[N+5], low[N+5], check[N+5], pow_cnt[N+5], tot, f[N+5], f2[N+5], f3[N+5];
void sieve() {
memset(check, 0, sizeof(check));
low[1] = 1; tot = 0; f[1] = f2[1] = f3[1] = 1; pow_cnt[1] = 0;
for(int i = 2; i <= N; ++i) {
if(!check[i]) {
low[i] = i; prime[tot++] = i;f[i] = i-2;
f2[i] = i; f3[i] = i; pow_cnt[i] = 1;
}
for(int j = 0; j < tot; ++j) {
if(i * prime[j] > N) break;
check[i*prime[j]] = 1;
if(i % prime[j] == 0) {
pow_cnt[i * prime[j]] = pow_cnt[i] + 1;
low[i * prime[j]] = low[i] * prime[j];
if(low[i] == i) {
if(i == prime[j]) f[i * prime[j]] = prime[j]*prime[j]+1-2*prime[j];
else f[i * prime[j]] = f[i] * prime[j];
f2[i * prime[j]] = f2[i];
f3[i * prime[j]] = f3[i];
if(pow_cnt[i*prime[j]] % 2 == 1) f2[i * prime[j]] *= prime[j];
if(pow_cnt[i*prime[j]] % 3 == 1) f3[i * prime[j]] *= prime[j];
}else {
f[i * prime[j]] = f[i / low[i]] * f[low[i] * prime[j]];
f2[i * prime[j]] = f2[i / low[i]] * f2[low[i] * prime[j]];
f3[i * prime[j]] = f3[i / low[i]] * f3[low[i] * prime[j]];
}
break;
}else {
low[i * prime[j]] = prime[j];
pow_cnt[i * prime[j]] = 1;
f[i * prime[j]] = f[i] * f[prime[j]];
f2[i * prime[j]] = f2[i] * f2[prime[j]];
f3[i * prime[j]] = f3[i] * f3[prime[j]];
}
}
}
}
int t, A, B, C;
int main() {
sieve();
// for(int i = 1; i <= 100; ++i) {
// cout << f3[i] << " ";
// }cout << endl;
scanf("%d", &t);
while(t--) {
scanf("%d%d%d", &A, &B, &C);
ll ans = 0;
for(int i = 1; i <= max(A,max(B,C)); ++i) {
ans = (ans + (A/i)*(B/f2[i])%mod*(C/f3[i])%mod*f[i]%mod)%mod;
}
cout << ans << endl;
}
}
【HDU 6428】Calculate 莫比乌斯反演+线性筛的更多相关文章
- 【bzoj2693】jzptab 莫比乌斯反演+线性筛
题目描述 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 1 4 5 样例输出 122 题解 莫比乌斯反演+线性筛 由 ...
- 【bzoj2694】Lcm 莫比乌斯反演+线性筛
题目描述 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^m|\mu(gcd(i,j))|lcm(i,j)$,即$gcd(i,j)$不存在平方因子的$lcm(i,j)$之 ...
- 【bzoj4407】于神之怒加强版 莫比乌斯反演+线性筛
题目描述 给下N,M,K.求 输入 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. 输出 如题 ...
- 【BZOJ-4407】于神之怒加强版 莫比乌斯反演 + 线性筛
4407: 于神之怒加强版 Time Limit: 80 Sec Memory Limit: 512 MBSubmit: 241 Solved: 119[Submit][Status][Discu ...
- BZOJ3309 DZY Loves Math(莫比乌斯反演+线性筛)
一通正常的莫比乌斯反演后,我们只需要求出g(n)=Σf(d)*μ(n/d)的前缀和就好了. 考虑怎么求g(n).当然是打表啊.设n=∏piai,n/d=∏pibi .显然若存在bi>1则这个d没 ...
- Luogu 4917 天守阁的地板(莫比乌斯反演+线性筛)
既然已经学傻了,这个题当然是上反演辣. 对于求积的式子,考虑把[gcd=1]放到指数上.一通套路后可以得到∏D∏d∏i∏j (ijd2)μ(d) (D=1~n,d|D,i,j=1~n/D). 冷静分析 ...
- 莫比乌斯反演/线性筛/积性函数/杜教筛/min25筛 学习笔记
最近重新系统地学了下这几个知识点,以前没发现他们的联系,这次总结一下. 莫比乌斯反演入门:https://blog.csdn.net/litble/article/details/72804050 线 ...
- bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛
Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...
随机推荐
- Gradle 构建工具
参考文章: 作者:ghui 链接:https://www.zhihu.com/question/30432152/answer/48239946 来源:知乎 著作权归作者所有.商业转载请联系作者获得授 ...
- 【BZOJ3689】异或之 堆+可持久化Trie树
[BZOJ3689]异或之 Description 给定n个非负整数A[1], A[2], ……, A[n].对于每对(i, j)满足1 <= i < j <= n,得到一个新的数A ...
- docker安装并配置加速
安装 旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本: sudo apt-get remove docker \ docker-engine \ ...
- litou.org.cn: A Shunde Program Fan.
终于有了自己的域名litou.org.cn.(虽然并不是什么难的事) 作为顺德的一名编程爱好者,编程就是全部,希望可以多分享一些设计和开发经验. 一份耕耘,一份收获.My Name is 泥头.
- Virtualbox报错------> VirtualBox虚拟机下鼠标不正常的解决方法
在Virtualbox虚拟机下,突然发现鼠标使用不正常.出现2个鼠标,一个是Ubuntu主机下面的鼠标,一个是Window7下的鼠标,但是Win7下的鼠标不可以看得到,但是点击鼠标左右键可以看到有反应 ...
- MySQL删除相同前缀的表,修改某个库的存储引擎
MySQL5.0 之后,提供了一个新的数据库information_schema,用来记录MySQL总的元数据信息.元数据指的是 数据的数据. 比如表名.列名.列类型.索引名等表的各种属性名称.这个库 ...
- Shell传参的多种方式
Shell 传参的多种方式 使用$1 $2 这种类似占位符的方式 # 命令行调用 start.sh 8080 9090 # 脚本中获取 port1=$1 # 8080 port2=$2 # 9090 ...
- Java多线程系列 JUC线程池01 线程池框架
转载 http://www.cnblogs.com/skywang12345/p/3509903.html 为什么引入Executor线程池框架 new Thread()的缺点 1. 每次new T ...
- 第一篇 css导入方式 及选择器
一 推荐资料 推荐书籍 css Zen Garden 中文(css禅意花园) 二.css样式 1.css样式表特征 继承性 大多数css的样式规则可以被继承 层叠性 1)可以定义 多个样式 2)不冲 ...
- 算法(Algorithms)第4版 练习 2.2.11(3)
关键代码实现: public static void sort(Comparable[] input) { int N = input.length; aux = input.clone();//mu ...