Longge's problem
求\(\sum_{i=1}^ngcd(i,n)\),\(n< 2^{31}\)。
解
理解1:
注意式子的实际意义,显然答案只可能在n的约数中,而现在问题变成了每个约数出现了几次,而一个约数d要出现的次数,自然需要这个数有约数d,其他的约数与之互斥,于是考虑欧拉函数,故我们有
\]
以此枚举n的约数爆算即可,时间复杂度不难得知为\(O(\sigma(n)\sqrt{n})\)。
理解2:
约数计数问题,考虑反演,于是有
\]
设
\]
\]
由Mobius反演定理,带入原式我们有
\]
\]
同理解1做法即可。
于是我们可以小结一下,同排列组合一样,约数计数问题,也有它的实际意义的理解,两者侧重点不同,一个侧重思维,一个侧重代数变换,但是殊途同归,而且不难得知最后的答案其实就是\(\varphi *id\),我们可以使用杜教筛对之优化,数据范围可以出到\(10^{11}\),但无论如何,重点都在于对于约数的巧妙的理解。
参考代码:
#include <iostream>
#include <cstdio>
#define il inline
#define ri register
#define ll long long
using namespace std;
il ll Phi(ll);
int main(){
ll ans,n,i;
while(scanf("%lld",&n)!=EOF){
for(ans&=0,i=1;i*i<n;++i)
if(!(n%i)){
ans+=(n/i)*Phi(i);
ans+=(i)*Phi(n/i);
}
if(i*i==n)ans+=i*Phi(i);
printf("%lld\n",ans);
}
return 0;
}
il ll Phi(ll n){
ri ll i,ans(n);
for(i=2;i<=n/i;++i)
if(!(n%i)){
(ans/=i)*=(i-1);
while(!(n%i))n/=i;
}if(n>1)(ans/=n)*=(n-1);
return ans;
}
Longge's problem的更多相关文章
- Longge's problem poj2480 欧拉函数,gcd
Longge's problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6918 Accepted: 2234 ...
- POJ2480 Longge's problem
题意 Language:Default Longge's problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1064 ...
- poj 2480 Longge's problem 欧拉函数+素数打表
Longge's problem Description Longge is good at mathematics and he likes to think about hard mathem ...
- POJ 2480 Longge's problem 欧拉函数—————∑gcd(i, N) 1<=i <=N
Longge's problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6383 Accepted: 2043 ...
- poj2480——Longge's problem(欧拉函数)
Longge's problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9190 Accepted: 3073 ...
- poj 2480 Longge's problem [ 欧拉函数 ]
传送门 Longge's problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7327 Accepted: 2 ...
- Longge's problem(欧拉函数应用)
Description Longge is good at mathematics and he likes to think about hard mathematical problems whi ...
- POJ_2480 Longge's problem【积性函数+欧拉函数的理解与应用】
题目: Longge is good at mathematics and he likes to think about hard mathematical problems which will ...
- 题解报告:poj 2480 Longge's problem(欧拉函数)
Description Longge is good at mathematics and he likes to think about hard mathematical problems whi ...
随机推荐
- python从入门到大神---Python的jieba模块简介
python从入门到大神---Python的jieba模块简介 一.总结 一句话总结: jieba包是分词技术,也就是将一句话分成多个词,有多种分词模型可选 1.分词模块包一般有哪些分词模式(比如py ...
- WinDbg解决BHO不加载
昨天zhengwei同学说他机器上的一个BHO不能正常加载,我把BHO的代码拿过来,在我的两台机器上都验证了一下,一台是Win7+IE8的环境,一台是XP+IE7的环境,都能正常加载.zhengwei ...
- c实现swap函数陷阱
swap函数陷阱 使用c实现一个交换两个数的函数,代码很简单: void swap(int *a, int *b) { *a ^= *b; *b ^= *a; *a ^= *b; } 只有3行代码,且 ...
- class8_Canvas 画布
最终的部分运行效果图(程序见序号4): #!/usr/bin/env python# -*- coding:utf-8 -*-# ----------------------------------- ...
- HDU 5052 /// 树链剖分+线段树区间合并
题目大意: 给定n (表示树有n个结点) 接下来n行给定n个点的点权(在这个点上买鸡或者卖鸡的价钱就是点权) 接下来n-1行每行给定 x y 表示x结点和y结点之间有一条边 给定q (表示有q个询问) ...
- vue 父子组件传递数据
单向数据流: 数据从父级组件传递给子组件,只能单向绑定. 子组件内部不能直接修改从父级传递过来的数据. 解决方法: 可以使用data将父组件传递过来的数据拷贝一份存放起来,再修改拷贝的数据就可以了 / ...
- 树莓派3b+ 实现视频监控
设备:树莓派3B+.Raspberry Pi Camera sudo raspi-config #启动camera sudo reboot #监测摄像头是否安装成功 raspistill -o ima ...
- 【Servlet】Servlet监听器
一.Servlet监听器的概念 Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext.HttpSession和ServletRequest等域对象的创建与销 ...
- 【未完成】Jmeter接口自动化测试:参数化设置
1. 从CSV文件读取参数 创建一个CVS文件,文件第一行不写参数名,直接从参数值开始,每一列代表一个参数 在测试计划或者线程组中,添加一个配置元件-->CSV 数据文件设置 Filename: ...
- 携程的 Dubbo 之路
本篇文章整理自董艺荃在 Dubbo 社区开发者日上海站的演讲. 缘起 携程当初为什么要引入 Dubbo 呢?实际上从 2013 年底起,携程内主要使用的就是基于 HTTP 协议的 SOA 微服务框架. ...