[51nod1237]最大公约数之和V3
$\sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j)\\$
$=\sum_{d=1}^{n}d\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}\varepsilon(gcd(i,j))$
$=\sum_{d=1}^{n}d\sum_{g=1}^{n/d}\mu(g)\cdot (n/d/t)^{2}$
$=\sum_{T=1}^{n}(n/T)^{2}\sum_{d|T}\mu(T/d)\cdot d$
$=\sum_{T=1}^{n}(n/T)^2\cdot \varphi(T)$
对其数论分块,即求一段区间内$\varphi$的和,可以用杜教筛来做
设$f(i)=\sum_{j=1}^{i}\varphi(j)$,根据$\varphi*I=id$,即$f(n)=(n+1)n/2-\sum_{i=2}^{n}f(n/i)$


1 #include<bits/stdc++.h>
2 #include<tr1/unordered_map>
3 using namespace std;
4 #define ll long long
5 #define mod 1000000007
6 #define N 5000005
7 tr1::unordered_map<ll,ll>mat;
8 ll n,ans,cp[N],vis[N],p[N];
9 ll djs(ll n){
10 if (n<=N-5)return cp[n];
11 if (mat[n])return mat[n];
12 ll ans=n%mod*((n+1)%mod)%mod*(mod/2+1)%mod;
13 for(ll i=2,j;i<=n;i=j+1){
14 j=n/(n/i);
15 ans=(ans-(j-i+1)%mod*djs(n/i)%mod+mod)%mod;
16 }
17 return mat[n]=ans;
18 }
19 int main(){
20 scanf("%lld",&n);
21 cp[1]=1;
22 for(int i=2;i<=N-5;i++){
23 if (!vis[i])cp[p[++p[0]]=i]=i-1;
24 for(int j=1;j<=p[0];j++){
25 if (i*p[j]>N-5)break;
26 vis[i*p[j]]=1;
27 if (i%p[j])cp[i*p[j]]=cp[i]*(p[j]-1);
28 else{
29 cp[i*p[j]]=cp[i]*p[j];
30 break;
31 }
32 }
33 }
34 for(int i=2;i<=N-5;i++)cp[i]=(cp[i]+cp[i-1])%mod;
35 for(ll i=1,j;i<=n;i=j+1){
36 j=n/(n/i);
37 ans=(ans+(djs(j)-djs(i-1)+mod)%mod*(n/i%mod)%mod*(n/i%mod))%mod;
38 }
39 printf("%lld",ans);
40 }
[51nod1237]最大公约数之和V3的更多相关文章
- 51nod1237 最大公约数之和 V3
题意:求 解: 最后一步转化是因为phi * I = Id,故Id * miu = phi 第二步是反演,中间省略了几步... 然后就这样A了......最终式子是个整除分块,后面用杜教筛求一下phi ...
- [51nod1237] 最大公约数之和 V3(杜教筛)
题面 传送门 题解 我好像做过这题-- \[ \begin{align} ans &=\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)\\ &=\sum_{d=1}^ ...
- 51NOD 1237 最大公约数之和 V3 [杜教筛]
1237 最大公约数之和 V3 题意:求\(\sum_{i=1}^n\sum_{j=1}^n(i,j)\) 令\(A(n)=\sum_{i=1}^n(n,i) = \sum_{d\mid n}d \c ...
- 51nod 1237 最大公约数之和 V3(杜教筛)
[题目链接] https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1237 [题目大意] 求[1,n][1,n]最大公约数之和 ...
- 51nod 1237 最大公约数之和 V3
求∑1<=i<=n∑1<=j<=ngcd(i,j) % P P = 10^9 + 7 2 <= n <= 10^10 这道题,明显就是杜教筛 推一下公式: 利用∑d ...
- 51nod1237 最大公约数之和
题目链接 题意 其实就是求 \[\sum\limits_{i=1}^n\sum\limits_{j=1}^ngcd(i,j)\] 思路 建议先看一下此题的一个弱化版 推一下式子 \[\sum\limi ...
- 51Nod.1237.最大公约数之和 V3(莫比乌斯反演 杜教筛 欧拉函数)
题目链接 \(Description\) \(n\leq 10^{10}\),求 \[\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)\ mod\ (1e9+7)\] \(Soluti ...
- 【题解】最大公约数之和 V3 51nod 1237 杜教筛
题目传送门 http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1237 数学题真是做的又爽又痛苦,爽在于只要推出来公式基本上就 ...
- 51nod 1237 最大公约数之和 V3【欧拉函数||莫比乌斯反演+杜教筛】
用mu写lcm那道卡常卡成狗(然而最后也没卡过去,于是写一下gcd冷静一下 首先推一下式子 \[ \sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j) \] \[ \sum_{i= ...
随机推荐
- .NET 开发一个服务器 应用管理工具
一:背景 1.Anno.Deploy Anno.Deploy可以和 Anno集成使用,用于部署新的服务.启动服务.停止服务.清理服务.也可以单独使用,用于守护程序. 使用方法 1.和Anno集成使用 ...
- ansible远程运维操作
1.command 用于查看文件内容,查看磁盘,内存,启动命令等纯命令信息 ansible portal -m command -a "cat /test1/test"2.ping ...
- Vue自定义页面路由
错误1:webpackEmptyContext (eval at ./src/store/modules sync recursive (0.js:10), <anonymous>:2:1 ...
- k8s调度器介绍(调度框架版本)
从一个pod的创建开始 由kubectl解析创建pod的yaml,发送创建pod请求到APIServer. APIServer首先做权限认证,然后检查信息并把数据存储到ETCD里,创建deployme ...
- Java基础之(十三):类与对象
初识面向对象 面向对象 & 面向过程 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么..... 面向过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,思考问题 ...
- codeforces316E3 Summer Homework(线段树,斐波那契数列)
题目大意 给定一个n个数的数列,m个操作,有三种操作: \(1\ x\ v\) 将\(a_x\)的值修改成v $2\ l\ r\ $ 求 \(\sum_{i=l}^r x_i*f_{i-l}\) 其中 ...
- DRF的action装饰器
1.action装饰器 Django默认的路由分发规则决定了视图函数只能以get.post等请求方式命名,如果想要使用自定义的方式命名,我们可以使用action去映射请求方法名与自定义方法 view. ...
- C#与java TCP通道加密通信
背景说明 公司收费系统需要与银行做实时代收对接,业务协议使用我们收费系统的标准.但是银行要求在业务协议的基础上,使用银行的加密规则. 采用MD5计算报文摘要,保证数据的完整性 采用RSA256对摘要进 ...
- Unity——自动化代码生成
自动化代码生成 一.前言 由于之前写过关于UI框架的文章,这篇基于之前的基础,添加了自动生成代码的功能: 如果学习过程有困惑可以跳转到之前的文章<Unity--基于UGUI的UI框架>: ...
- [技术博客] 利用SharedPreferences来实现登录状态的记忆功能
[技术博客] 利用SharedPreferences来实现登录状态的记忆功能 一.SharedPreferences简介 SharedPreferences是Android平台上一个轻量级的存储辅助类 ...