HDU 5528 Count a * b

Count a * b

推式子

f(n)=∑i=0n−1∑j=0n−1n∤ij=n2−∑i=1n∑j=1nn∣ij=n2−∑i=1n∑j=1nngcd(i,n)∣igcd(i,n)j=n2−∑i=1nnngcd(i,n)=n2−∑i=1ngcd(i,n)=n2−∑d∣nd∑i=1n(gcd(i,n)==d)=n2−∑d∣nd∑i=1nd(gcd(i,nd)==1)=n2−∑d∣ndϕ(nd)f(n) = \sum_{i= 0} ^{n - 1} \sum_{j = 0} ^ {n - 1} n \nmid ij\\ = n ^ 2 - \sum_{i = 1} ^{n} \sum_{j = 1} ^{n} n \mid ij\\ = n ^ 2 - \sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \frac{n}{gcd(i, n)} \mid \frac{i}{gcd(i, n)}j\\ = n ^ 2 - \sum_{i = 1} ^{n} \frac{n}{\frac{n}{gcd(i, n)}}\\ = n ^ 2 - \sum_{i = 1} ^{n} gcd(i, n)\\ = n ^ 2 - \sum_{d \mid n} d \sum_{i = 1} ^{n} (gcd(i, n) == d)\\ = n ^ 2 - \sum_{d \mid n} d \sum_{i = 1} ^{\frac{n}{d}} (gcd(i, \frac{n}{d}) == 1)\\ = n ^ 2 - \sum_{d \mid n} d \phi(\frac{n}{d})\\ f(n)=i=0n1j=0n1nij=n2i=1nj=1nnij=n2i=1nj=1ngcd(i,n)ngcd(i,n)ij=n2i=1ngcd(i,n)nn=n2i=1ngcd(i,n)=n2dndi=1n(gcd(i,n)==d)=n2dndi=1dn(gcd(i,dn)==1)=n2dndϕ(dn)

g(n)=∑m∣nf(m)=∑m∣nm2−∑m∣n∑d∣mdϕ(md)=∑m∣nm2−∑d∣nd∑d∣m,m∣nϕ(md)=∑m∣nm2−∑d∣nd∑k∣ndϕ(k)=∑m∣nm2−∑d∣nng(n) = \sum_{m \mid n} f(m)\\ = \sum_{m \mid n} m ^ 2 - \sum_{m \mid n} \sum_{d \mid m} d \phi(\frac{m}{d})\\ = \sum_{m \mid n} m ^ 2 - \sum_{d \mid n} d \sum_{d \mid m, m \mid n} \phi(\frac{m}{d})\\ = \sum_{m \mid n} m ^ 2 - \sum_{d \mid n} d \sum_{k \mid \frac{n}{d}} \phi(k)\\ = \sum_{m \mid n} m ^ 2 - \sum_{d \mid n}n\\ g(n)=mnf(m)=mnm2mndmdϕ(dm)=mnm2dnddm,mnϕ(dm)=mnm2dndkdnϕ(k)=mnm2dnn

有约数个数等于∏i=1sum(numi+1)\prod _{i = 1} ^{sum}(num_i + 1)i=1sum(numi+1)

约数之和等于∏i=1sum(1+pi1+pi2+……+pinumi)\prod _{i = 1} ^{sum}(1 + p_i ^ {1} + p_i ^{2} + …… + p_i ^{num_i})i=1sum(1+pi1+pi2++pinumi)

约数平方之和等于∏i=1sum(1+pi2+pi4+……+pi2numi)\prod _{i = 1} ^{sum}(1 + p_i ^ {2} + p_i ^{4} + …… + p_i ^{2num_i})i=1sum(1+pi2+pi4++pi2numi)

可以推导,也就是多个等比数列求前n项和,然后累乘。

代码

/*Author : lifehappy
*/
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <bits/stdc++.h>#define mp make_pair
#define pb push_back
#define endl '\n'
#define mid (l + r >> 1)
#define lson rt << 1, l, mid
#define rson rt << 1 | 1, mid + 1, r
#define ls rt << 1
#define rs rt << 1 | 1using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;const double pi = acos(-1.0);
const double eps = 1e-7;
const int inf = 0x3f3f3f3f;inline ll read() {ll f = 1, x = 0;char c = getchar();while(c < '0' || c > '9') {if(c == '-')    f = -1;c = getchar();}while(c >= '0' && c <= '9') {x = (x << 1) + (x << 3) + (c ^ 48);c = getchar();}return f * x;
}const int N = 1e5 + 10;ull prime[N];
int cnt;bool st[N];void init() {for(int i = 2; i < N; i++) {if(!st[i]) prime[cnt++] = i;for(int j = 0; j < cnt && i * prime[j] < N; j++) {st[i * prime[j]] = 1;if(i % prime[j] == 0) break;}}
}ull quick_pow(ull a, int n) {ull ans = 1;while(n) {if(n & 1) ans = ans * a;a = a * a;n >>= 1;}return ans;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);init();int T = read();while(T--) {ull n = read(), m = n;ull ans = 1, sum = 1;for(int i = 0; i < cnt && prime[i] * prime[i] <= n; i++) {if(n % prime[i]) continue;int num = 0;while(n % prime[i] == 0) {n /= prime[i];num++;}ull res = 1 + prime[i] * prime[i] * ((quick_pow(prime[i], 2 * num) - 1) / (prime[i] * prime[i] - 1));ans *= res;sum *= 1ull * (num + 1);}if(n != 1) {ans *= 1 + 1ull * n * n; sum *= 2ull;}printf("%llu\n", ans - sum * m);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LOJ#572】Misaka Network 与求和(莫比乌斯反演/杜教筛/min_25筛)

【LOJ#572】Misaka Network 与求和 https://www.cnblogs.com/cjyyb/p/10170630.html 看到次大质因子就可以想到是min_25筛了&#xff0c;然后只需要做莫比乌斯反演&#xff0c;然后预处理整除分块点的前缀和&#xff0c;然后再结合杜教筛即可。

软件设计的第一性原理:结构化抽象

软件设计的第一性原理&#xff0c;是结构化抽象。术生于道&#xff0c;技术生于原理。引语所谓的第一性原理&#xff0c;就是无论使用什么方法论&#xff0c;都无法绕过的那最最基础的部分。无论是 DDD 设计&#xff0c;还是面向模式的架构设计&#xff0c;或 微服务架构&#…

HDU 6706 huntian oy (欧拉函数 + 杜教筛)

huntian oy 推式子 ∑i1n∑j1igcd(ia−ja,ib−jb)(gcd(i,j)1)∑i1n∑j1i(i−j)(gcd(i,j)1)∑i1ni∑j1i(gcd(i,j)1)−∑i1n∑j1ij(gcd(i,j)1)∑i1niϕ(i)−∑i1niϕ(i)(i1)2∑i1niϕ(i)−(i1)2然后套路地变成求S(n)∑i1niϕ(i)g(n)nϕ(n)这里直接套用杜教筛化简得到g(1)S(n)∑i…

【LOJ#6682】梦中的数论(min_25筛)

【LOJ#6682】梦中的数论 https://www.cnblogs.com/cjyyb/p/11178395.html 利用min_25筛&#xff0c;求解约数个数函数平方的前缀和。

基于.NetCore结合docker-compose实践Gitlab-CI/CD 排坑指南

引言看过docker-compose真香的园友可能留意到当时是【把部署dll文件拷贝到生产机器】&#xff0c;即时打包成镜像并启动容器&#xff0c;并没有完成CI/CD。经过长时间实操验证&#xff0c;终于完成基于Gitlab的CI/CD实践&#xff0c;本次实践的坑位很多&#xff0c; 实操过程尽…

51 NOD 1227 平均最小公倍数(杜教筛)

1227 平均最小公倍数 推式子 S(n)∑i1n∑j1ilcm(i,j)i∑i1n∑j1iijigcd(i,j)∑i1n∑j1ijgcd(i,j)∑i1n∑d1i∑j1ijd(gcd(i,j)d)∑i1n∑d1i∑j1idj(gcd(j,id)1)∑i1n∑d1iidϕ(id)(id1)2∑d1n∑i1ndiϕ(i)(i1)2接下来就是杜教筛求∑i1niϕ(i)了&#xff0c;g(1)S(n)∑i1n(f∗g)…

【BZOJ3512】DZY Loves Math IV(杜教筛)

【BZOJ3512】DZY Loves Math IV&#xff08;杜教筛&#xff09; https://www.cnblogs.com/cjyyb/p/10165338.html

.NET Core很酷,你不得不知

我一直回想我的第一篇博文&#xff0c;那是关于多个服务的服务器平台的详细教程&#xff0c;它使用 GitLab CI 在 AWS 上&#xff0c;当时使用单个命令行进行部署&#xff0c; 至今回想&#xff0c;令人感觉很酷。前几天&#xff0c;我偶然听说一些软件公司的 HR 在招聘原则上拒…

51 NOD 1363 最小公倍数之和 (欧拉函数思维应用)

1363 最小公倍数之和 推式子 ∑i1nlcm(i,n)n∑i1nigcd(i,n)n∑d∣n∑i1nid(gcd(i,n)d)n∑d∣n∑i1ndi(gcd(i,nd)1)n∑d∣ndϕ(d)(d1)2\sum_{i 1} ^{n} lcm(i, n)\\ n\sum_{i 1} ^{n} \frac{i}{gcd(i, n)}\\ n \sum_{d \mid n} \sum_{i 1} ^{n} \frac{i}{d}(gcd(i, n) d)…

【BZOJ3930】选数(莫比乌斯反演倍数形式,杜教筛)

【BZOJ3930】选数 https://www.cnblogs.com/cjyyb/p/8303813.html

程序员修神之路--高并发系统设计负载均衡架构

点击上方“蓝字”关注&#xff0c;酷爽一夏菜菜哥&#xff0c;上次你给我讲的分库分表策略对我帮助很大有帮助就好&#xff0c;上次请我的咖啡也很好喝~呵呵&#xff0c;不过随着访问量的不断加大&#xff0c;网站我又加了nginx做负载均衡好呀&#xff0c;看来要进阶高级工程师…

类欧几里得算法详细推导过程(附带模板)

类欧几里得算法推导 初识 给出三种形式&#xff1a; f(a,b,c,n)∑i0n⌊aibc⌋f(a, b, c, n) \sum_{i 0} ^{n} \lfloor\frac{ai b}{c}\rfloorf(a,b,c,n)∑i0n​⌊caib​⌋g(a,b,c,n)∑i0ni⌊aibc⌋g(a, b, c, n) \sum_{i 0} ^{n}i \lfloor \frac{ai b}{c}\rfloorg(a,b,c…

【Luogu3768】简单的数学题(莫比乌斯反演/杜教筛/欧拉函数)

【Luogu3768】简单的数学题 https://www.cnblogs.com/cjyyb/p/8298339.html

【学习笔记】Docker - 01. Docker是啥

我只是把之前的学习笔记整理一下&#xff0c;贴到这里&#xff0c;可能会显得比较凌乱。。。1.1 啥是Docker?Docker 是一个开源项目&#xff0c;它被用来做构建、打包和运行程序。它是一个命令行程序&#xff0c;一个后台进程&#xff0c;也是一组使用逻辑方法来解决常见软件问…

使用 .NET CORE 创建 项目模板,模板项目,Template

场景&#xff1a;日常工作中&#xff0c;你可能会碰到需要新建一个全新的解决方案的情况&#xff08;如公司新起了一个新项目&#xff0c;需要有全新配套的后台程序&#xff09;&#xff0c;如果公司内部基础框架较多、解决方案需要DDD模式等&#xff0c;那么从新起项目到各种依…

【BZOJ4916】神犇和蒟蒻(杜教筛)

【BZOJ4916】神犇和蒟蒻&#xff08;杜教筛&#xff09; https://www.cnblogs.com/cjyyb/p/8297338.html 杜教筛技巧

E. Number Challenge

E. Number Challenge 推式子 ∑i1a∑j1b∑k1cσ(ijk)∑i1a∑j1b∑k1c∑x∣i∑y∣j∑z∣k(gcd(x,y)1)(gcd(x,z)1)(gcd(y,z)1)∑x1a∑y1b∑z1c⌊ax⌋⌊by⌋⌊cz⌋(gcd(x,y)1)(gcd(x,z)1)(gcd(y,z)1)∑d1aμ(d)∑x1⌊ad⌋⌊adx⌋∑y1⌊bd⌋⌊bdy⌋∑z1c⌊cd⌋(gcd(x,z)1)(gcd(y,z…

时间表(日记)

2021/1/14 今天白天学习还算成功&#xff0c;但是晚饭后拿起手机就开始颓废了&#xff0c;特别是因为听相声实在是无聊而且低俗&#xff0c;所以又忍不住诱惑下载了b站&#xff0c;相比于相声b站的确是有营养的多&#xff0c;但是一旦激起了我的好奇心&#xff0c;尤其是吸引了…

谈谈surging 微服务引擎 2.0的链路跟踪和其它新增功能

一、前言surging是基于.NET CORE 服务引擎。初始版本诞生于2017年6月份&#xff0c;经过NCC社区二年的孵化&#xff0c;2.0版本将在2019年08月28日进行发布&#xff0c;经历二年的发展&#xff0c;已经全部攘括了微服务架构的技术栈&#xff0c;覆盖了从服务注册、服务发现、中…

2019-ACM-ICPC-南京区网络赛-E. K Sum(莫比乌斯反演 + 杜教筛)

K Sum 推式子 Fn(k)∑l11n∑l21n⋯∑lk1n(gcd(l1,l2,…,lk))2∑d1nd2∑l11nd∑l21nd⋯∑lk1nd(gcd(l1,l2,…,lk)1)∑d1nd2∑l11nd∑l21nd⋯∑lk1nd∑t∣gcd(l1,l2,…,lk)μ(t)∑d1nd2∑t1ndμ(t)(ntd)2另Ttd∑T1n(nT)k∑d∣Td2μ(Td)∑i2nFn(i)∑T1n∑i2k(nT)i∑d∣Td2μ(Td)到…