poj 2480 Longge's problem
/**
大意: 计算f(n) = ∑ gcd(i, N) 1<=i <=N.
思路: gcd(i,x*y) = gcd(i,x) * gcd(i, y ) 所以gcd 为积性函数
又因为积性函数的和函数 也是积性函数(具体数学,了解即可)
f(n) = f(p1^a1 * p2^a2 * p3^a3*......* pn^an )
= f(p1^a1) * f(p2^a2) * f(p3* a3) ......
现在我们先单独考虑一个 f(p1^a1)
f(p^k)=1*φ(p^k)+ p*φ[p^(k-1)]+p^2*φ[p^(k-2)]+…+ p^(k-1)*φ[p]+ p^k*φ[1]②
由欧拉函数性质知:φ(p^k)=(p-1)*p^(k-1)① 将①代入②得到:
f(p^k)= 1*φ(p^k) + p*φ[p^(k-1)] + p^2*φ[p^(k-2)] +…+ p^(k-1)*φ[p] + p^k*φ[1]
=1*(p-1)*p^(k-1)+p*(p-1)*p^(k-2)+ p^2*(p-1)*p^(k-3)+…+p^(k-1)*(p-1)+p^k (这要注意φ[1]=1不能代入①式求解)
=(p-1)*p^(k-1)+ (p-1)*p^(k-1)+(p-1)*p^(k-1)+…+(p-1)*p^(k-1)+ p^k
=k*(p-1)*p^(k-1)+ p^k
**/
#include <iostream> using namespace std; int main()
{
long long n;
while(cin>>n){
long long ans =;
for(long long i=;i*i<=n;i++){
long long tmp =;
long long cnt =;
while(n%i==){
tmp *=i;
cnt++;
n = n/i;
}
ans *= (cnt*(i-)*tmp/i + tmp);
}
if(n>){
ans *= *n-;
}
cout<<ans<<endl;
}
return ;
}
poj 2480 Longge's problem的更多相关文章
- poj 2480 Longge's problem [ 欧拉函数 ]
传送门 Longge's problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7327 Accepted: 2 ...
- 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 ...
- [poj 2480] Longge's problem 解题报告 (欧拉函数)
题目链接:http://poj.org/problem?id=2480 题目大意: 题解: 我一直很欣赏数学题完美的复杂度 #include<cstring> #include<al ...
- 题解报告:poj 2480 Longge's problem(欧拉函数)
Description Longge is good at mathematics and he likes to think about hard mathematical problems whi ...
- POJ 2480 Longge's problem (积性函数,欧拉函数)
题意:求∑gcd(i,n),1<=i<=n思路:f(n)=∑gcd(i,n),1<=i<=n可以知道,其实f(n)=sum(p*φ(n/p)),其中p是n的因子.为什么呢?原因 ...
- poj 2480 Longge's problem 积性函数
思路:首先给出几个结论: 1.gcd(a,b)是积性函数: 2.积性函数的和仍然是积性函数: 3.phi(a^b)=a^b-a^(b-1); 记 f(n)=∑gcd(i,n),n=p1^e1*p2^e ...
- POJ 2480 Longge's problem 积性函数
题目来源:id=2480" style="color:rgb(106,57,6); text-decoration:none">POJ 2480 Longge's ...
- poj 2480 Longge's problem 积性函数性质+欧拉函数
题意: 求f(n)=∑gcd(i, N) 1<=i <=N. 分析: f(n)是积性的数论上有证明(f(n)=sigma{1<=i<=N} gcd(i,N) = sigma{d ...
随机推荐
- start stack
Start OpenStack Services After launching your stack by Devstack, you maybe stop some services or reb ...
- java常用日期函数总结
请记得要引入java.util.Date和java.text.SimpleDateFormat两个包 1.计算某一月份的最大天数 Calendar time=Calendar.getInstance( ...
- mysql 的卸载、再安装与常用命令
1.卸载mysql.完全删除: 删除 mysqlsudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-se ...
- python 类属性、对象属性
类的普通属性: dir(Myclass), 返回一个key列表: Myclass.__dir__,返回一个字典: 1.类的数据属性: 2.类的方法: 类的特殊属性: 1.Myclass.__name_ ...
- STL-multimap
转自:http://www.cnblogs.com/xiaoka/archive/2011/08/09/2132342.html multimap提供了可以一种可以有重复键值的STL map类型.其插 ...
- #pragma的用法
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和 C++语言完全 ...
- 行内元素有哪些?块级元素有哪些?CSS的盒模型?转载
块级元素:div p h1 h2 h3 h4 form ul行内元素: a b br i span input selectCss盒模型:内容,border ,margin,padding css中的 ...
- html文件引入其它html文件的几种方法:include方式
可以在一个html的文件当中读取另一个html文件的内容吗?答案是确定的,而且方法不只一种,在以前我只会使用iframe来引用,后来发现了另外的几种方法,那今天就总结这几种方法让大家参考一下. 1.I ...
- BZOJ 1489: [HNOI2009]双递增序( dp )
dp(i, j)表示选第i个, 且当前序列长度为j, 另一个序列的最后一个元素的最小值...然后根据上一个是哪个序列选的讨论一下就行了...奇怪的dp... --------------------- ...
- Linux中ssh的免密码登陆
原理: Hadoop的各个节点要实时的进行各种通信的,ssh就是能让各个节点免密码的相互访问相互通信. 操作步骤: 这里用的加密方式是非对称的加密方式,具体的操作是: <1>执行命令ssh ...