$\sum_{i=1}^{n}\sum_{j=1}^{n}d(ij)$

$\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{p|i}\sum_{q|j}[gcd(p,q)\equiv 1]$

$\sum_{p=1}^{n}\sum_{q=1}^{n}[gcd(p,q)\equiv 1]\sum_{p|i}\sum_{q|j}1$

$\sum_{p=1}^{n}\sum_{q=1}^{n}[gcd(p,q)\equiv 1]\frac{n}{p}\frac{n}{q}$

$\sum_{p=1}^{n}\sum_{q=1}^{n}\sum_{t|gcd(p,q)}\mu(t)\frac{n}{p}\frac{n}{p}$

$\sum_{t=1}^{n}\mu(t)\sum_{p=1}^{\frac{n}{t}}\frac{n}{pt}\sum_{q=1}^{\frac{n}{t}}\frac{n}{qt}$

#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#define ll long long
using namespace std;
const ll mode=1000000007;
map <ll,ll> S;
int mu[10000005];
ll s[10000005];
int pri[10000005];
int cnt=0;
bool used[10000005];
void init()
{
mu[1]=s[1]=1;
for(int i=2;i<=10000000;i++)
{
if(!used[i])pri[++cnt]=i,mu[i]=-1;
for(int j=1;j<=cnt&&i*pri[j]<=10000000;j++)
{
used[i*pri[j]]=1;
if(i%pri[j]==0){mu[i*pri[j]]=0;break;}
mu[i*pri[j]]=-mu[i];
}
s[i]=(s[i-1]+mu[i]+mode)%mode;
}
}
ll get_S(ll x)
{
if(x<=10000000)return s[x];
else if(S.find(x)!=S.end())return S[x];
ll ret=0;
int las=0;
for(int i=2;i<=x;i=las+1)
{
las=x/(x/i);
ll temp=get_S(x/i);
ret=(ret+temp*(las-i+1)+mode)%mode;
}
ret=(1+mode-ret)%mode;
return S[x]=ret;
}
ll get_sum(ll x)
{
ll las=0,ret=0;
for(int i=1;i<=x;i=las+1)
{
las=x/(x/i);
ret+=(las-i+1)*(x/i)%mode;
ret%=mode;
}
return ret*ret%mode;
}
ll solve(ll n)
{
ll las=0,ret=0;
for(int i=1;i<=n;i=las+1)
{
las=n/(n/i);
ret+=(get_S(las)-get_S(i-1)+mode)%mode*get_sum(n/i)%mode;
ret%=mode;
}
return ret;
}
int main()
{
init();
ll n;
scanf("%lld",&n);
printf("%lld\n",solve(n));
return 0;
}

## bzoj 4176的更多相关文章

1. bzoj 4176 Lucas的数论

bzoj 4176 Lucas的数论 和约数个数和那题差不多.只不过那个题是多组询问,这题只询问一次,并且 $$n$$ 开到了 $$10^9$$. \begin{align*} \sum_{i= ... 2. Mobius反演与积性函数前缀和演学习笔记 BZOJ 4176 Lucas的数论 SDOI 2015 约数个数和 下文中所有讨论都在数论函数范围内开展. 数论函数指的是定义域为正整数域, 且值域为复数域的函数. 数论意义下的和式处理技巧 因子 \[ \sum_{d | n} a_d = \sum_{d | n} ... 3. ●BZOJ 4176 Lucas的数论 题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4176 题解: 莫比乌斯反演,杜教筛 首先有这么一个结论: 令d(n)表示n的约数的个数(就是 ... 4. BZOJ 4176: Lucas的数论 [杜教筛] 4176: Lucas的数论 题意:求$$\sum_{i=1}^n \sum_{j=1}^n \sigma_0(ij)$$ $$n \le 10^9$$ 代入\(\sigma_0(nm)=\sum_{ ... 5. 【刷题】BZOJ 4176 Lucas的数论 Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目"求Sigma(f(i)),其中1<=i< ... 6. bzoj 4176: Lucas的数论 -- 杜教筛，莫比乌斯反演 4176: Lucas的数论 Time Limit: 30 Sec Memory Limit: 256 MB Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么 ... 7. [bzoj 4176] Lucas的数论 (杜教筛 + 莫比乌斯反演) 题面 设d(x)d(x)d(x)为xxx的约数个数,给定NNN,求 ∑i=1N∑j=1Nd(ij)\sum^{N}_{i=1}\sum^{N}_{j=1} d(ij)i=1∑N​j=1∑N​d(ij) ... 8. 【bzoj 4176】 Lucas的数论 莫比乌斯反演（杜教筛） Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)),其中1<=i<=N”,其 ... 9. BZOJ 4176 Lucas的数论 莫比乌斯反演+杜教筛 题意概述:求,n<=10^9,其中d(n)表示n的约数个数. 分析: 首先想要快速计算上面的柿子就要先把d(ij)表示出来,有个神奇的结论: 证明:当且仅当a,b没有相同的质因数的时候我们统计其 ... 10. bzoj 4176: Lucas的数论【莫比乌斯反演+杜教筛】 首先由这样一个结论: \[ d(ij)=\sum_{p|i}\sum_{q|j}[gcd(p,q)==1] 然后推反演公式: \[ \sum_{i=1}^{n}\sum_{j=1}^{n}\su ...

## 随机推荐

1. Python的入门学习Day 19~21——form”夜曲编程“

..Day 19 time:2021.8.16. ​ 很神奇地,编程和数学渐渐有了交集--今天学习了函数,连模样都像 f(x) 的形式.比较有区分度的是,在P里,"x"被称为&qu ...

2. Linux 第四节(shell脚本，IF，do,for）

Shell脚本 1.批处理式: 2.交互式: 脚本声明   #!/bin/bash 脚本注释   #fakba;kb 脚本命令   ls pwd bash test.sh   //执行test.sh脚 ...

3. 路飞项目 day03 前端配置、后台主页、项目依赖问题

一.路飞项目前端配置 1.先删除一些不要的 ​ 删除多余的组件,只要app和首页组件 ​ 然后改一下组件的内部代码 -App.vue中 ______________ <template> ...

4. 【java数据结构与算法】选择排序

选择排序原理剖析: 假设数组arr使用选择排序 每一轮选出数组最小的元素 arr.lenth个元素,只需要找出arr.length-1个元素的正确位置 选择排序便进行结束 外层for循环控制选择排序的 ...

5. 《【转载】ChatGPT创始人，给我们上的8堂课》 回复

<[转载]ChatGPT创始人,给我们上的8堂课>           https://tieba.baidu.com/p/8276644432

6. ubuntu 下如何设置环境变量

一.设置环境变量的三种方法 1.1 临时设置 export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:\$PATH 1.2 当前用户的全局设置 打开~/. ...

7. C 标准 C89/C90/C99/C11/C17