关于1-n任意的gcd的和
gcd和
题目
GCD sum
公约数的和
大意是让你求1-n任意两个数的gcd的和之类的。
解法
显然你需要枚举对吧,不然你怎么可能求出gcd呢?
其次我们需要一些数学推理
令F(n)表示\(\sum_{i=1}^{n}gcd(1,n)\)
则我们只需要求出\(2\times \sum_{i=1}^{n}F(i) + \sum_{i=1}^{n}i\)对吧。
那么成立的充要条件是\(gcd(a/d,b/d)=1\),则我们就知道\(gcd(a/d,b/d)*d=gcd(a,b)\)
那么所以我们需要求出有多少个1-n/d的互质的数,显然这就是欧拉函数
所以我们就有了如下两道题目代码
//code 1
#include<bits/stdc++.h>
#define int long long //还是自觉换long long 更好吧
using namespace std;
const int maxn=100000+5;
int phi[maxn];
int f[maxn];
int s[maxn];
void get(int n) {
for(int i=2; i<=n; i++) phi[i]=0;
phi[1]=1;
for(int i=2; i<=n; i++) {
if(!phi[i]) {
for(int j=i; j<=n; j+=i) {
if(!phi[j]) phi[j]=j;
phi[j]=phi[j]/i*(i-1);
}
}
}
}
main() {
int n;
cin>>n;
get(n);
for(int i=1; i<=n; i++)
for(int j=i*2; j<=n; j+=i)
f[j]+=i*phi[j/i];
for(int i=1; i<=n; i++) s[i]=s[i-1]+f[i];
cout<<s[n]*2+(1+n)*n/2;
return 0;
}
//code 2
#include<bits/stdc++.h>
#define int long long //还是自觉换long long 更好吧
using namespace std;
const int maxn=2000000+5;
int phi[maxn];
int f[maxn];
int s[maxn];
void get(int n) {
for(int i=2; i<=n; i++) phi[i]=0;
phi[1]=1;
for(int i=2; i<=n; i++) {
if(!phi[i]) {
for(int j=i; j<=n; j+=i) {
if(!phi[j]) phi[j]=j;
phi[j]=phi[j]/i*(i-1);
}
}
}
}
main() {
int n;
cin>>n;
get(n);
for(int i=1; i<=n; i++)
for(int j=i*2; j<=n; j+=i)
f[j]+=i*phi[j/i];
for(int i=1; i<=n; i++) s[i]=s[i-1]+f[i];
cout<<s[n];
return 0;
}
关于1-n任意的gcd的和的更多相关文章
- 数字任意组合 - gcd
链接:https://www.nowcoder.com/acm/contest/160/A来源:牛客网 题目描述有一个计数器,计数器的初始值为0,每次操作你可以把计数器的值加上a1,a2,...,an ...
- ReactiveCocoa基础知识内容
本文记录一些关于学习ReactiveCocoa基础知识内容,对于ReactiveCocoa相关的概念如果不了解可以网上搜索:RACSignal有很多方法可以来订阅不同的事件类型,ReactiveCoc ...
- ReactiveCocoa v2.5 源码解析 之 架构总览
ReactiveCocoa 是一个 iOS 中的函数式响应式编程框架,它受 Functional Reactive Programming 的启发,是 Justin Spahr-Summers 和 J ...
- ReactiveCocoa_v2.5 源码解析之架构总览
ReactiveCocoa 是一个 iOS 中的函数式响应式编程框架,它受 Functional Reactive Programming 的启发,是 Justin Spahr-Summers 和 J ...
- [codeforces 804F. Fake bullions]
题目大意: 传送门. 给一个n个点的有向完全图(即任意两点有且仅有一条有向边). 每一个点上有$S_i$个人,开始时其中有些人有真金块,有些人没有金块.当时刻$i$时,若$u$到$v$有边,若$u$中 ...
- 长沙理工校赛I题题解-连续区间的最大公约数
题目来源https://www.nowcoder.com/acm/contest/96/I 解题前们需要先知道几个结论: 首先,gcd是有区单调性的: gcd(L,R)>=gcd(L,R+d) ...
- iOS ReactiveCocoa 最全常用API整理(可做为手册查询)
本文适合有一定RAC基础的童鞋做不时的查询,所以本文不做详细解释. 一.常见类 1.RACSiganl 信号类. RACEmptySignal :空信号,用来实现 RACSignal 的 +empty ...
- 题解 洛谷P2158 【[SDOI2008]仪仗队】
本文搬自本人洛谷博客 题目 本文进行了一定的更新 优化了 Markdown 中 Latex 语句的运用,加强了可读性 补充了"我们仍不曾知晓得 消失的 性质5 ",加强了推导的严谨 ...
- 积性函数初步(欧拉$\varphi$函数)
updata on 2020.4.3 添加了欧拉\(\varphi\)函数为积性函数的证明和它的计算方式 1.积性函数 设\(f(n)\)为定义在正整数上的函数,若\(f(1)=1\),且对于任意正整 ...
随机推荐
- 微信小程序video组件出现无法播放或卡顿
微信小程序使用video组件播放视频的时候,会出现卡顿或者无法播放的问题,加一个custom-cache=”true“即可解决,这个属性文档上没有,是从小程序开发社区中get到的.
- java题(转载)
1.下面中哪两个可以在A的子类中使用:( ) class A { protected int method1 (int a, int b) { return 0; } } A. public int ...
- 百度map API
1.做demo用的 http://developer.baidu.com/map/jsdemo.htm demo代码(外部使用的话需要提供密钥): <!DOCTYPE html> < ...
- postgreSQL格式化时间的函数详解
数据类型格式化函数: PostgreSQL格式化函数提供一套有效的工具用于把各种数据类型(日期/时间.integer.floating point和numeric)转换成格式化的字符串以及反过来 ...
- 谷歌C++编程为何禁止缺省参数
C++的缺省参数尽量不要使用,结果可能出乎我们的意料,下面的程序大家看看输出结果是多少? ) cout << num << endl; ...
- 2017/01/20 学习笔记 关于修改和重打jar包
背景 客户提供了jar包,但发现db表中缺少一个字段,db追加以后需要修改jar包中的source. 操作 如何修改jar包中的source并重新打一个新的jar包,做了如下操作. ① 开包 解压j ...
- 常用 CSS 选择器
// css 读取顺序从右到左,符合要求的都会匹配 // 通配符选择器 -- 选择所有元素 * // 通配符选择器 -- 选择某个元素下的所有元素 .demo * // 元素选择器 html,body ...
- CorelDRAW X7软件中如何将图片剪贴到文字中
将 图片剪贴到文字中是平面设计常用的一种处理方法之一,将图片剪贴到文字中是指将图片置入到该文字,且图片的外轮廓是沿着文字的形状剪贴的,这种处理手法被广泛应用于排版设计中.本教程将带大家了解如何用Cor ...
- Ecshop 扯淡问题
1:解决 :在 temp 文件下创建 backup文件夹 修改权限 2:待补充...
- JS 蓝球弹起的高度 100 米 第几次高度小于1米
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...