题目传送门:链接

能自己推出正确的式子的感觉真的很好!

题意简述:

求\(\sum_{i=1}^{n}gcd(i,n)\)。\(n\leq 2^{32}\)。

题解:

我们开始化简式子:

\(\sum_{i=1}^{n}gcd(i,n)\)

\(=\sum_{j=1}^{n}\left(j\times\sum_{i=1}^{n}\left[gcd(i,n)=j\right]\right)\)

\(=\sum_{j=1}^{n}\left(j\times\sum_{i=1}^{n}\left[gcd(i/j,n/j)=1\right]\left(j|i,j|n\right)\right)\)

\(=\sum_{j=1}^{n}\left(j\times\varphi\left(n/j\right)\left(j|n\right)\right)\)

\(=\sum_{j|n}\left(j\times\varphi\left(n/j\right)\right)\)

到这里就可以直接计算了。

但是还可以进一步化简!(以下的\(p\)为质数)

\(\sum_{j|n}(j\times\varphi(n/j))\)

\(=\sum_{j|n}(n/j\times\varphi\left(j\right))\)

\(=\sum_{j|n}(n/j\times(j\cdot\prod_{p|j}\frac{p-1}{p}))\)

\(=\sum_{j|n}(n\cdot\prod_{p|j}\frac{p-1}{p})\)

\(=n\times\sum_{j|n}\prod_{p|j}\frac{p-1}{p}\)

接下来我们令\(n=p_1^{b_1}p_2^{b_2}p_3^{b_3}\cdots p_k^{b_k}\),并定义\(f_i=\frac{p_i-1}{p_i}\)。

那么\(n\)的因子\(j\)可以表示为:\(j=p_1^{c_1}p_2^{c_2}p_3^{c_3}\cdots p_k^{c_k}\),满足\(0\leq c_i\leq b_i\)。

那么\(\prod_{p|j}\frac{p-1}{p}=\prod_{i=1}^kf_i[c_i>0]\)。

我们观察一类\(\prod_{i=1}^kf_i[c_i>0]\)相等的\(j\),它们必要满足在\(i\)相等的情况下,\(c_i\)同时大于0或\(c_i\)同时等于0。

那么这一类的\(j\)有多少个呢?如果这类\(j\)有质因子\(p_{q_1},p_{q_2},p_{q_3},\cdots,p_{q_g}\)。

那么这类\(j\)的答案为\(\prod_{i=1}^gf_{q_i}\),而个数为\(\prod_{i=1}^gb_{q_i}\)。

\(b_i\)就是原来\(n\)的质因数分解的指数。

那么对答案的贡献为:\(\prod_{i=1}^g\chi_{q_i}\)。这里\(\chi_i=f_i\cdot b_i\)。

发现每一个质因子的贡献都是独立的,那么最后我们枚举\(n\)的每一个质因子取不取,得到最后的答案:\(n\cdot\prod_{i=1}^{k}(\chi_i+1)\)。

举个例子:如果\(n\)只有\(3\)个质因子,那么答案为\(n\cdot(1+\chi_1+\chi_2+\chi_3+\chi_1\chi_2+\chi_1\chi_3+\chi_2\chi_3+\chi_1\chi_2\chi_3)\)。

显然可以化简为:\(n\cdot(\chi_1+1)\cdot(\chi_2+1)\cdot(\chi_3+1)\)。

当然可以类比到质因数更多的情况。

总之,答案就是:\(n\cdot\prod_{i=1}^{k}\frac{b_i\cdot p_i-b_i+p_i}{p_i}\)。

代码:

 #include<cstdio>
long long n;
long long f(){
long long ans=n; long long i;
for(i=;i*i<=n;++i) if(n%i==){
int b=;
while(n%i==) ++b,n/=i;
ans/=i;
ans*=b*i-b+i;
} if(n>) ans/=n, ans*=n+n-;
return ans;
}
int main(){
scanf("%lld",&n);
printf("%lld",f());
return ;
}

【洛谷题解】P2303 [SDOi2012]Longge的问题的更多相关文章

  1. 洛谷 P2303 [SDOi2012]Longge的问题 解题报告

    P2303 [SDOi2012]Longge的问题 题目背景 SDOi2012 题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数\(N\),你需要 ...

  2. 洛谷 题解 UVA572 【油田 Oil Deposits】

    这是我在洛谷上的第一篇题解!!!!!!!! 这个其实很简单的 我是一只卡在了结束条件这里所以一直听取WA声一片,详细解释代码里见 #include<iostream> #include&l ...

  3. 洛谷 题解 P1600 【天天爱跑步】 (NOIP2016)

    必须得说,这是一道难题(尤其对于我这样普及组205分的蒟蒻) 提交结果(NOIP2016 天天爱跑步): OJ名 编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间 Libre ...

  4. 洛谷题解P4314CPU监控--线段树

    题目链接 https://www.luogu.org/problemnew/show/P4314 https://www.lydsy.com/JudgeOnline/problem.php?id=30 ...

  5. 洛谷P2303 [SDOi2012]Longge的问题

    题目背景 SDOi2012 题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). ...

  6. 洛谷P2303 [SDOi2012] Longge的问题 数论

    看懂了题解,太妙了TT但是想解释的话可能要很多数学公式打起来太麻烦了TT所以我就先只放代码具体推演的过程我先写在纸上然后拍下来做成图片放上来算辣quq 好的那我先滚去做题了做完这题就把题解放上来.因为 ...

  7. 洛谷题解 CF777A 【Shell Game】

    同步题解 题目翻译(可能有童鞋没读懂题面上的翻译) 给你三张牌0,1,2. 最初选一张,然后依次进行n次交换,交换规则为:中间一张和左边的一张,中间一张和右边一张,中间一张和左边一张...... 最后 ...

  8. 洛谷题解 CF807A 【Is it rated?】

    同步题解 题目 好吧,来说说思路: 1.先读入啦~(≧▽≦)/~啦啦啦 2.判断a[i]赛前赛后是否同分数,如果分数不同,则输出,return 0 . 3.如果同分数,则判断a[i]赛前(或赛后)是否 ...

  9. 洛谷题解 P1138 【第k小整数】

    蒟蒻发题解了 说明:此题我用的方法为桶排(我翻了翻有人用了桶排只不过很难看出来,可能有些重复的,这个题只是作为一个专门的桶排来讲解吧) (不会算抄袭吧 ‘QWaWQ’) 简单来说(会的人跳过就行): ...

随机推荐

  1. MT【129】常数变易法

    已知数列\(\{x_n\}\)满足\[x_{n+1}=\left(\dfrac 2{n^2}+\dfrac 3n+1\right)x_n+n+1,n\in\mathbf N^*,\]且\(x_1=3\ ...

  2. Codeforces 633C Spy Syndrome 2 | Trie树裸题

    Codeforces 633C Spy Syndrome 2 | Trie树裸题 一个由许多空格隔开的单词组成的字符串,进行了以下操作:把所有字符变成小写,把每个单词颠倒过来,然后去掉单词间的空格.已 ...

  3. 【ARC075F】Mirror

    Description ​ 给定正整数\(D\),求有多少个正整数\(N\),满足\(rev(N)=N+D\). ​ 其中\(rev(N)\)表示将\(N\)的十进制表示翻转来读得到的数(翻转后忽略前 ...

  4. 《Linux内核设计与实现》学习总结 Chap18

    一.准备开始 1.一个确定的bug,但大部分bug通常都不是行为可靠且定义明确的. 2.一个藏匿bug的内核版本. 3.相关内核代码的知识和运气. 二.内核中的bug 1.bug的表象: 明白无误的错 ...

  5. 【数学/贪心/DP】【CF1088E】 Ehab and a component choosing problem

    Description 给定一棵 \(n\) 个节点的树,点有点权 \(a_u\),可能为负.现在请你在树上找出 \(k~(1~\leq~k~\leq~n)\) 个不相交集合,使得每个集合中的每对点都 ...

  6. CMake 案例

    单个源文件 # CMake 最低版本号要求 cmake_minimum_required (VERSION 3.11) # 项目信息 project (Demo) # 指定生成目标 add_execu ...

  7. 浏览器json数据格式化

    在浏览器上作接口测试的时候看到json 格式的数据是密密麻麻的一片,眼睛都花了..  如: 设置方法:  chrome  的右上角选择,然后---  更多工具---  扩展程序  ----   JSO ...

  8. 十、Shell基础

    一.shell概述 1.Shell是什么 shell是一个命令行解释器,他为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至编写一些程序 ...

  9. Docker入门与应用系列(三)容器管理

    一.启动容器 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另一个是将终止状态的容器重新启动. 1.1 新建并启动 主要命令为 docker run 下面的命令输出一个”Hello,world ...

  10. PyCharm引入自定义类报错

    This inspection detects names that should resolve but don't. Due to dynamic dispatch and duck typing ...