[51Nod 1220] - 约数之和 (杜教筛)
题面
令d(n)d(n)d(n)表示nnn的约数之和求
∑i=1n∑j=1nd(ij)\large\sum_{i=1}^n\sum_{j=1}^nd(ij)i=1∑nj=1∑nd(ij)
题目分析
先给结论
d(ij)=∑x∣i∑y∣jxj/y[(x,y)==1]\large d(ij)=\sum_{x|i}\sum_{y|j}xj/y[(x,y)==1]d(ij)=x∣i∑y∣j∑xj/y[(x,y)==1]
可以通过 传送门 类似的证明方法证明
拖更…
AC code
#include <cstdio>
#include <map>
#include <algorithm>
using namespace std;
typedef long long LL;
const int MAXN = 1e6 + 1, mod = 1e9 + 7;
int Prime[MAXN/10], Cnt, mu[MAXN];
bool IsnotPrime[MAXN];
inline void init(int n)
{
mu[1] = 1;
for(int i = 2; i <= n; ++i)
{
if(!IsnotPrime[i])
Prime[++Cnt] = i, mu[i] = -1;
for(int j = 1, v; j <= Cnt && i * Prime[j] <= n; ++j)
{
v = i * Prime[j];
IsnotPrime[v] = 1;
if(i % Prime[j] == 0) { mu[v] = 0; break; }
mu[v] = -mu[i];
}
}
for(int i = 1; i <= n; ++i)
mu[i] = (mu[i-1] + i*mu[i]%mod) % mod;
}
map<int, int>s;
inline int f(int i, int j) //i+(i+1)+...+j
{
return ((LL)(i+j) * (j-i+1)/2) % mod;
}
inline int sum(int n) //mu(1)1+mu(2)2+...+mu(n)n
{
if(n < MAXN) return mu[n];
if(s.count(n)) return s[n];
int ret = 1;
for(int i = 2, j; i <= n; i=j+1)
{
j = n/(n/i);
ret = (ret - (LL)f(i,j) * sum(n/i) % mod) % mod;
}
return s[n]=ret;
}
inline int calc(int n)
{
int ret = 0, k;
for(int i = 1, j; i <= n; i=j+1)
{
j = n/(n/i); k = n/i;
ret = (ret + (LL)(j-i+1) * (((LL)k*(k+1)/2)%mod) % mod) % mod;
}
return ret;
}
inline int solve(int n)
{
int ret = 0, last = 0, tmp, tmp2;
for(int i = 1, j; i <= n; i=j+1)
{
tmp = sum(j = n/(n/i)), tmp2 = calc(n/i), tmp2 = (LL)tmp2 * tmp2 % mod;
ret = (ret + (LL)(tmp - last) * tmp2 % mod) % mod;
last = tmp;
}
return ret;
}
int main ()
{
int n; init(MAXN-1);
scanf("%d", &n);
printf("%d\n", (solve(n)+mod)%mod);
}
[51Nod 1220] - 约数之和 (杜教筛)的更多相关文章
- 51NOD 1220 约数之和 [杜教筛]
1220 约数之和 题意:求\(\sum_{i=1}^n \sum_{j=1}^n \sigma_1(ij)\) \[ \sigma_0(ij) = \sum_{x\mid i}\sum_{y\mi ...
- 51nod 1220 约数之和【莫比乌斯反演+杜教筛】
首先由这样一个式子:\( d(ij)=\sum_{p|i}\sum_{q|j}[gcd(p,q)==1]\frac{pj}{q} \)大概感性证明一下吧我不会证 然后开始推: \[ \sum_{i=1 ...
- 【51nod】1239 欧拉函数之和 杜教筛
[题意]给定n,求Σφ(i),n<=10^10. [算法]杜教筛 [题解] 定义$s(n)=\sum_{i=1}^{n}\varphi(i)$ 杜教筛$\sum_{i=1}^{n}(\varph ...
- 51Nod.1244.莫比乌斯函数之和(杜教筛)
题目链接 map: //杜教筛 #include<map> #include<cstdio> typedef long long LL; const int N=5e6; in ...
- [51Nod 1237] 最大公约数之和 (杜教筛+莫比乌斯反演)
题目描述 求∑i=1n∑j=1n(i,j) mod (1e9+7)n<=1010\sum_{i=1}^n\sum_{j=1}^n(i,j)~mod~(1e9+7)\\n<=10^{10}i ...
- 【51nod-1239&1244】欧拉函数之和&莫比乌斯函数之和 杜教筛
题目链接: 1239:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 1244:http://www.51nod. ...
- 51 NOD 1239 欧拉函数之和(杜教筛)
1239 欧拉函数之和 基准时间限制:3 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 收藏 关注 对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目.此函数以其首名研究 ...
- 51 NOD 1244 莫比乌斯函数之和(杜教筛)
1244 莫比乌斯函数之和 基准时间限制:3 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 收藏 关注 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens) ...
- 51nod1244 莫比乌斯函数之和 杜教筛
虽然都写了,过也过了,还是觉得杜教筛的复杂度好玄学 设f*g=h,∑f=S, 则∑h=∑f(i)S(n/i下取整) 把i=1时单独拿出来,得到 S(n)=(∑h-∑2->n f(i)S(n/i下 ...
随机推荐
- C++工程师养成 每日一题(string使用)
题目: 题目来源牛客网:https://www.nowcoder.com/practice/f0db4c36573d459cae44ac90b90c6212?tpId 输入两个字符串,从第一字符串中删 ...
- c++11多线程记录4:死锁
简单示例 举个例子,桌上有一支笔和一张纸,小A和小B都要拿到纸笔写字 小A拿了笔,小B拿了纸,这时就形成了死锁(两人都不愿意让出纸笔). 其实只要稍加控制就可以避免这种情况:规定必须先拿到纸再能去尝试 ...
- 深度学习-强化学习(RL)概述笔记
强化学习(Reinforcement Learning)简介 强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益.其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予 ...
- vue中sessionStorage的使用
转载:https://www.cnblogs.com/denken/p/11197612.html localStorage 和 sessionStorage 属性允许在浏览器中存储 key/valu ...
- CentOS7安装MySQL(完整版)
在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB. 1 下载并安装MySQL官方的 Yum Re ...
- oracle 数据库导入导出语句
oracle的exp/imp命令用于实现对数据库的导出/导入操作;exp命令用于把数据从远程数据库服务器导到本地,生成.dmp文件;imp命令用于把本地的数据库.dmp文件从本地导入到远程的oracl ...
- Jmeter学习笔记(十九)——后置处理器之正则表达式的使用
一.正则表达式提取器的作用 允许用户从服务器的响应中通过使用perl的正则表达式提取值.作为一个后置处理器,该元素会作用在指定范围的取样器,应用正则表达式,提取所需要的值,生成模板字符串,并将结果存储 ...
- 归并排序python实现源码
将开发过程经常用到的一些代码片段收藏起来,下面的资料是关于归并排序python实现的代码,应该能对码农们有一些用. def mergesort(arr): if len(arr) == 1: retu ...
- 为什么在定义hashcode时要使用31这个数呢?
散列计算就是计算元素应该放在数组的哪个元素里.准确的说是放到哪个链表里面.按照Java的规则,如果你要想将一个对象放入HashMap中,你的对象的类必须提供hashcode方法,返回一个整数值. ht ...
- 【TTS】传输表空间Linux asm -> AIX asm
[TTS]传输表空间Linux asm -> AIX asm 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌 ...