【51Nod 1238】最小公倍数之和 V3
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1238
设\(A(n)=\sum\limits_{i=1}^n\frac{in}{(i,n)}\),则\(ans=\sum\limits_{i=1}^n\left(2A(i)-i\right)\)
A(n)=&n\sum_{d|n}\sum_{i=1}^{\frac nd}i\left[\left(i,\frac nd\right)=1\right]\\
=&\frac n2\sum_{d|n}\left(\varphi(d)d+[d=1]\right)\\
=&\frac n2\sum_{d|n}\varphi(d)d+\frac n2\\
ans=&\sum_{i=1}^n\left(2A(i)-i\right)\\
=&\sum_{i=1}^ni\sum_{d|i}\varphi(d)d\\
=&\sum_{i=1}^ni\sum_{d=1}^{\left\lfloor\frac ni\right\rfloor}\varphi(d)d^2\\
\end{aligned}
\]
设\(S(n)=\sum\limits_{i=1}^n\varphi(i)i^2\),求出\(O\left(\sqrt n\right)\)不同下取整取值的\(S\)就可以算出答案了,所以现在重点是杜教筛\(S(n)\)。
先让\(f(n)=\varphi(n)n^2\)卷上\(f(n)=n^2\)
\]
\sum_{i=1}^ni^3=&\sum_{i=1}^{n}\sum_{d|i}\varphi(d)d^2\left(\frac id\right)^2\\
=&\sum_{i=1}^ni^2\sum_{d=1}^{\left\lfloor\frac ni\right\rfloor}\varphi(d)d^2\\
=&\sum_{i=1}^ni^2S\left(\left\lfloor\frac ni\right\rfloor\right)\\
\end{aligned}
\]
如果要求\(S(n)\),\(S(n)=\sum\limits_{i=1}^ni^3-\sum\limits_{i=2}^ni^2S\left(\left\lfloor\frac ni\right\rfloor\right)\),时间复杂度\(O\left(n^{\frac 23}\right)\)。
PS:\(\sum\limits_{i=1}^ni^3=\left(\frac{n(n+1)}{2}\right)^2\)
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 100003;
const int B = 4641589;
const int p = 1000000007;
const int ni2 = 500000004;
const int ni6 = 166666668;
ll n;
bool notp[B + 1];
int phi[B + 1], sum[B + 1], num = 0, prime[B + 1];
void Euler_shai() {
sum[1] = phi[1] = 1;
for (int i = 2; i <= B; ++i) {
if (!notp[i]) prime[++num] = i, phi[i] = i - 1;
for (int j = 1; j <= num && prime[j] * i <= B; ++j) {
notp[prime[j] * i] = true;
if (i % prime[j] == 0) {
phi[prime[j] * i] = prime[j] * phi[i];
break;
} else
phi[prime[j] * i] = (prime[j] - 1) * phi[i];
}
sum[i] = (1ll * phi[i] * i % p * i % p + sum[i - 1]) % p;
}
}
int ps[B];
ll ndx;
int S(ll x) {return (ndx = n / x) <= B ? sum[ndx] : ps[x];}
void DJ_shai() {
for (ll i = n, y; i >= 1; i = n / (y + 1)) {
y = n / i;
if (y <= B) continue;
int &s = ps[i];
s = y % p * (y % p) % p * ((y + 1) % p) % p * ((y + 1) % p) % p * ni2 % p * ni2 % p;
for (ll j = 2, pre = 1, spre = 1, sj; j <= y; spre = sj, pre = j, ++j) {
j = y / (y / j);
sj = j % p * ((j + 1) % p) % p * ((j * 2 + 1) % p) % p * ni6 % p;
((s -= (sj - spre + p) % p * S(i * j) % p) += p) %= p;
}
}
}
main() {
scanf("%lld", &n);
Euler_shai();
int ans = 0;
DJ_shai();
for (ll i = 1, pre = 0; i <= n; pre = i, ++i) {
i = n / (n / i);
(ans += (i + pre + 1) % p * ((i - pre) % p) % p * ni2 % p * S(i) % p) %= p;
}
printf("%d\n", ans);
return 0;
}
【51Nod 1238】最小公倍数之和 V3的更多相关文章
- 51nod 1238 最小公倍数之和 V3
51nod 1238 最小公倍数之和 V3 求 \[ \sum_{i=1}^N\sum_{j=1}^N lcm(i,j) \] \(N\leq 10^{10}\) 先按照套路推一波反演的式子: \[ ...
- 51NOD 1238 最小公倍数之和 V3 [杜教筛]
1238 最小公倍数之和 V3 三种做法!!! 见学习笔记,这里只贴代码 #include <iostream> #include <cstdio> #include < ...
- 51nod 1238 最小公倍数之和 V3 【欧拉函数+杜教筛】
首先题目中给出的代码打错了,少了个等于号,应该是 G=0; for(i=1;i<=N;i++) for(j=1;j<=N;j++) { G = (G + lcm(i,j)) % 10000 ...
- 51Nod 1238 最小公倍数之和V3
题目传送门 分析: 现在我们需要求: \(~~~~\sum_{i=1}^{n}\sum_{j=1}^{n}lcm(i,j)\) \(=\sum_{i=1}^{n}\sum_{j=1}^{n}\frac ...
- 51Nod 1238 - 最小公倍数之和 V3(毒瘤数学+杜教筛)
题目 戳这里 推导 ∑i=1n∑j=1nlcm(i,j)~~~\sum_{i=1}^{n}\sum_{j=1}^{n}lcm(i,j) ∑i=1n∑j=1nlcm(i,j) =∑i=1n∑j= ...
- 【51nod】1238 最小公倍数之和 V3 杜教筛
[题意]给定n,求Σi=1~nΣj=1~n lcm(i,j),n<=10^10. [算法]杜教筛 [题解]就因为写了这个非常规写法,我折腾了3天…… $$ans=\sum_{i=1}^{n}\s ...
- 51 NOD 1238 最小公倍数之和 V3
原题链接 最近被51NOD的数论题各种刷……(NOI快到了我在干什么啊! 然后发现这题在网上找不到题解……那么既然A了就来骗一波访问量吧…… (然而并不怎么会用什么公式编辑器,写得丑也凑合着看吧…… ...
- 51 Nod 1238 最小公倍数之和 V3 杜教筛
题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1238 题意:求$\sum_{i=1}^{n}\sum_{j=1}^{n}l ...
- [51Nod 1238] 最小公倍数之和 (恶心杜教筛)
题目描述 求∑i=1N∑j=1Nlcm(i,j)\sum_{i=1}^N\sum_{j=1}^Nlcm(i,j)i=1∑Nj=1∑Nlcm(i,j) 2<=N<=10102<=N ...
- 【学术篇】51nod 1238 最小公倍数之和
这是一道杜教筛的入(du)门(liu)题目... 题目大意 求 \[ \sum_{i=1}^n\sum_{j=1}^nlcm(i,j) \] 一看就是辣鸡反演一类的题目, 那就化式子呗.. \[ \s ...
随机推荐
- Load an image from a url into a PictureBox
var url="https://xyk.cebbank.com/verify_code.jpg?3345789"; HttpClient client = new HttpCli ...
- ASP.NET中的加密页面机制
本节介绍ASP.NET对视图信息的加密功能.Page.RegisterRequiresViewStateEncryption方法就是将控件注册为需要视图状态加密的控件.如果您要开发用于处理潜在的敏感信 ...
- 【Foreign】Melancholy [线段树]
Melancholy Time Limit: 10 Sec Memory Limit: 256 MB Description DX3906星系,Melancholy星上,我在勘测这里的地质情况. 我 ...
- 【BZOJ】1176: [Balkan2007]Mokia
[题意]n*n的矩阵,初始值为0(题面有误),m次操作,增加一个格子的权值,或查询子矩阵和.n<=2*10^6.(m应该较题面所述偏大). [算法]CDQ分治(算法知识见数据结构) [题解]三维 ...
- 【CodeForces】901 C. Bipartite Segments
[题目]C. Bipartite Segments [题意]给定n个点m条边的无向连通图,保证不存在偶数长度的简单环.每次询问区间[l,r]中包含多少子区间[x,y]满足只保留[x,y]之间的点和边构 ...
- Let's Encrypt 免费通配 https 签名证书 安装方法2 ,安卓签名无法认证!
Let's Encrypt 免费通配 https 签名证书 安装方法 按照上文 配置完毕后你会发现 在pc浏览器中正常访问,在手机浏览器中无法认证 你只需要安装一个或多个中级证书 1.查看Nginx ...
- 【leetcode 简单】第五十题 位1的个数
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量). 示例 : 输入: 11 输出: 3 解释: 整数 11 的二进制表示为 00000000000 ...
- idea中tomcat乱码问题解决
在idea中经常遇到jsp的乱码问题,原因是编码不是UTF-8的问题,这次来彻底解决idea的编码问题 首先设置idea编辑器的编码: File-Setting设置如下 然后配置tomcat的编码问题 ...
- solr笔记之安装部署到tomcat
1. 下载 solr 去官网下载,下载的时候选清华的镜像源,这个页面:https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/7.1.0/ 在/ ...
- 可怕的npm蠕虫
https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8 ...