ZOJ The Sum of Unitary Totient(min_25 筛)

The Sum of Unitary Totient

积性函数,满足质数点是多项式,直接 min_25 了,由于单次求解,所以使用递归的 min_25 会较快。

#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int prime[N], a[N], id1[N], id2[N], cnt, n, T, m;long long sum1[N], sum2[N], g1[N], g2[N], s[N];bool st[N];inline int ID(int x) {return x <= T ? id1[x] : id2[n / x];
}void init() {T = sqrt(n + 0.5);m = 0;for (int l = 1, r; l <= n; l = r + 1) {r = n / (n / l);a[++m] = n / l;a[m] <= T ? id1[a[m]] = m : id2[n / a[m]] = m;g1[m] = 1ll * a[m] * (a[m] + 1) /  2 - 1;g2[m] = a[m] - 1;}for (int j = 1; j <= cnt && 1ll * prime[j] * prime[j] <= n; j++) {for (int i = 1; i <= m && 1ll * prime[j] * prime[j] <= a[i]; i++) {g1[i] -= 1ll * prime[j] * (g1[ID(a[i] / prime[j])] - sum1[j - 1]);g2[i] -= (g2[ID(a[i] / prime[j])] - sum2[j - 1]);}}/*下面是递推的 min_25。*/// for (int i = 1; i <= m; i++) {//   s[i] = g1[i] - g2[i];// }// int top = 1;// while (1ll * prime[top] * prime[top] <= n) {//   top++;// }// top--;// for (int j = top; j >= 1; j--) {//   for (int i = 1; i <= m && 1ll * prime[j] * prime[j] <= a[i]; i++) {//     for (int cur = prime[j]; 1ll * cur * prime[j] <= a[i]; cur *= prime[j]) {//       s[i] += 1ll * (cur - 1) * (s[ID(a[i] / cur)] - sum1[j] + sum2[j]) + cur * prime[j] - 1;//     }//   }// }
}long long solve(int n, int m) {if (n < prime[m]) {return 0;} long long res = g1[ID(n)] - g2[ID(n)] - sum1[m - 1] + sum2[m - 1];for(int j = m; j <= cnt && 1ll * prime[j] * prime[j] <= n; j++) {for(int i = prime[j]; 1ll * i * prime[j] <= n; i *= prime[j]) {res += (i - 1) * solve(n / i, j + 1) + i * prime[j] - 1;}} return res;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);for (int i = 2; i < N; i++) {if (!st[i]) {prime[++cnt] = i;sum1[cnt] = sum1[cnt - 1] + i;sum2[cnt] = sum2[cnt - 1] + 1;}for (int j = 1; j <= cnt && 1ll * i * prime[j] < N; j++) {st[i * prime[j]] = 1;if (i % prime[j] == 0) {break;}}}while (scanf("%d", &n) != EOF) {init();printf("%lld\n", solve(n, 1) + 1);}return 0;
}

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

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

相关文章

迫于误解压力,RMS从自由软件基金会与MIT离职

自由软件基金会官网显示&#xff0c;基金会创始人兼主席、自由软件运动发起人 Richard M. Stallman&#xff08;RMS&#xff09;辞去主席职务并辞去董事会职务。而另一边&#xff0c;stallman.org 邮件列表显示&#xff0c;RMS 已经从麻省理工学院&#xff08;MIT&#xff09;计…

F - Colorful Tree(LCA,树上差分,离线处理)

F - Colorful Tree 给定一棵树&#xff0c;边有边权&#xff0c;且每条边有一个颜色&#xff0c;有mmm次操作&#xff0c; 每次给定x,y,u,vx, y, u, vx,y,u,v&#xff0c;如果把颜色为xxx的边&#xff0c;边权修改为yyy&#xff0c;求u,vu, vu,v两点的距离&#xff0c;考虑 …

让人迷茫的三十岁!从专业技能、行业知识和软实力谈一下!

作者&#xff1a;邹溪源&#xff0c;长沙资深互联网从业者&#xff0c;架构师社区合伙人&#xff01;我今年三十岁&#xff0c;我很迷茫&#xff0c;不知道未来该选择什么发展方向。这是我无意中在社区微信群中看到的一位年轻的开发者说的话&#xff0c;之前他也经常会在技术群…

D. Steps to One(概率DP,莫比乌斯反演)

D. Steps to One 设f[i]f[i]f[i]为gcd⁡\gcdgcd为iii&#xff0c;还需要多少个数&#xff0c;那么有f[i]1∑j1mf[gcd⁡(i,j)]mf[i] 1 \frac{\sum\limits_{j 1} ^{m} f[\gcd(i, j)]}{m}f[i]1mj1∑m​f[gcd(i,j)]​&#xff0c; f[1]0f[1] 0f[1]0&#xff0c;考虑化简∑j1mf…

误用.Net Redis客户端工具CSRedisCore,自己挖坑自己填

前导  上次Redis MQ分布式改造完成之后&#xff0c; 编排的容器稳定运行了一个多月&#xff0c;昨天突然收到ETL端同事通知&#xff0c;没有采集到解析日志了。赶紧进服务器看了一下&#xff0c;用于数据接收的receiver容器挂掉了&#xff0c; 尝试docker container start [c…

Java——类加载机制

** 一、什么是类的加载 ** 类的加载指的是将类的.class文件中的二进制数据读入到内存中&#xff0c;将其放在运行时数据区的方法区内&#xff0c;然后在堆区创建一个java.lang.Class对象&#xff0c;用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class…

.NET中国峰会议题征集

月初做的调查《》&#xff0c;参与人数576人&#xff0c;愿意参与分享.NET Core经验的142人&#xff0c;今天发起分会场主题演讲和闪电演讲议题.2014年微软组织成立.NET基金会&#xff0c;微软在成为主要的开源参与者的道路上又前进了一步。2014年以来已经有众多知名公司加入.N…

E. Almost Sorted(构造,递归)

E. Almost Sorted 我们定义 almost sorted 数组为&#xff0c;ai1≥ai−1a_{i 1} \geq a_i - 1ai1​≥ai​−1&#xff0c;也就是说&#xff0c; 先写几项出来看看&#xff1a; n 1 1 n 2 1 2 2 1 n 3 1 2 3 1 3 2 2 1 3 3 2 1 容易发现一定是&#xff0c;形如x,x−1,x−…

D. Cut and Stick(Codeforces Round #716 (Div. 2))

D. Cut and Stick 给定一个长度为nnn的数组&#xff0c;里面元素为a1,a2,a3,…,an−1,an,(1≤ai≤n)a_1, a_2, a_3, \dots, a_{n- 1}, a_n, (1 \leq a_i \leq n)a1​,a2​,a3​,…,an−1​,an​,(1≤ai​≤n)&#xff0c;有mmm次询问&#xff0c;每次给定l,rl, rl,r&#xff0…

一些学习教程资料等你来拿

近期整理自己的云盘中发现近年来私藏了很多学习资料和教程&#xff0c;本着独乐乐不如众乐乐的精神&#xff0c;特将其分享出来供有兴趣的童鞋学习。进入公众号&#xff0c;输入关键词"敏捷"/"agile"/"scrum"&#xff0c;即可获得敏捷开发类别的…

Java——编译与反编译

** 一、基础知识 ** 1.1 编程语言 在介绍编译和反编译之前&#xff0c;我们先来简单介绍下编程语言&#xff08;Programming Language&#xff09;。编程语言&#xff08;Programming Language&#xff09;分为低级语言&#xff08;Low-level Language&#xff09;和高级语…

程序员自家种水果,新鲜包邮配送

上次猕猴桃的活动<好多小伙伴&#xff0c;买了一箱尝过后又下单了好几箱。事实证明&#xff0c;品质才是销量的最佳保证。有些粉丝找到我说&#xff0c;自己家也有果园自己种水果&#xff0c;都是当天采摘当天发货的纯天然水果。于是他们给我寄了一些自家种的苹果、香瓜、冬…

2016-2017 ACM-ICPC CHINA-Final(7 / 12)

2016-2017 ACM-ICPC CHINA-Final A. Number Theory Problem&#xff08;规律、签到&#xff09; #include <bits/stdc.h>using namespace std;int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdo…

【招聘(广州)】-年薪30W起-自助打印领域业内第一

印萌是一家为高校打印店提供整套“无人自助打印”解决方案的互联网科技公司&#xff0c;已获得数百万元融资&#xff0c;公司正向盈利。目前产品覆盖清华大学、北京大学、中山大学、复旦大学、浙江大学等700多所高校&#xff0c;多达1800间打印店&#xff0c;累计为全国1200万大…

尾递归

1、递归 简单的来说递归就是一个函数直接或间接地调用自身&#xff0c;是为直接或间接递归。一般来说&#xff0c;递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时&#xff0c;递归前进&#xff1b;当边界条件满足时&#xff0c;递归返回。 用递归需要注意以…

小 Q 与函数求和 1(牛客练习赛 81 E)

小 Q 与函数求和 1 ∑i1n∑j1nϕ(ijgcd⁡(i,j)K)∑i1n∑j1ngcd⁡(i,j)Kϕ(ij)∑i1n∑j1ngcd⁡(i,j)Kϕ(i)ϕ(j)gcd⁡(i,j)ϕ(gcd⁡(i,j))∑i1n∑j1ngcd⁡(i,j)K1ϕ(i)ϕ(j)ϕ(gcd⁡(i,j))∑d1ndK1inv(ϕ(d))∑i1nd∑j1ndϕ(id)ϕ(jd)[gcd⁡(i,j)1]∑d1ndK1inv(phi(d))∑k1ndϕ(…

asp.net core 中使用 signalR(二)

asp.net core 使用 signalR&#xff08;二&#xff09;Intro上次介绍了 asp.net core 中使用 signalR 服务端的开发&#xff0c;这次总结一下web前端如何接入和使用 signalR&#xff0c;本文主要分两部分&#xff0c;一是直接使用 aspnet/signalr 这个微软开发好的 signalR 的客…

Java位运算实现加、减、乘、除、取余(Mark)

先mark&#xff0c;后续再搞 位运算基础&#xff1a; https://blog.csdn.net/goskalrie/article/details/52796360 加减乘除 1&#xff1a;https://blog.csdn.net/zuochao_2013/article/details/79183621 2&#xff1a;https://www.jianshu.com/p/7bba031b11e7 https://ww…

小 Q 与树(dsu on tree + segment tree)牛客练习赛 81 D

小 Q 与树 给定一棵带权的树&#xff0c;每条边的距离都为111&#xff0c;要我们求∑u1n∑v1nmin(au,av)dis(u,v)\sum\limits_{u 1} ^{n} \sum\limits_{v 1} ^{n}min(a_u, a_v)dis(u, v)u1∑n​v1∑n​min(au​,av​)dis(u,v)&#xff0c; min(au,av)dis(u,v)min(au,av)(dep…

多场景抢红包业务引发.NETCore下使用适配器模式实现业务接口分离

事情的起因我们公司现有一块业务叫做抢红包&#xff0c;最初的想法只是实现了一个初代版本&#xff0c;就是给指定的好友单发红包&#xff0c;随着业务的发展&#xff0c;发红包和抢红包的场景也越来越多&#xff0c;目前主要应用的场景有&#xff1a;单聊发红包、群聊发红包、…