spoj LCM Sum
来源:互联网 发布:python基础教程 怎么样 编辑:程序博客网 时间:2024/06/10 19:30
一个数论定理 对于n >= 2 小于它与它互质的数的和 为 n*phi*(n)/2
然后lcm(a,b) = a * b / gcd(a, b)
时间太紧 所以打表预处理枚举每个数然后找到每个能整除它的数加上一部分欧拉函数的和
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<iostream>#include<cmath>#define maxn 1000005#define LL long longusing namespace std;// 欧拉函数3LL eular[maxn];LL prime[maxn][15],num[maxn],flag[maxn],AM = 0;void Eorue(){ eular[1] = 1; for(LL i = 2;i < maxn; i++){ if(eular[i] == i){ eular[i] = i - 1; for(LL j = 2; j * i < maxn; j++){ eular[i * j] = eular[i * j] * (i - 1) / i; } } //eular[i] += eular[i-1]; }}LL ans[maxn];int main(){ for(LL i = 1; i < maxn; i++) eular[i] = i; Eorue(); for(LL i = 1; i <= 1000000; i++) for(LL j = 1; j * i <= 1000000; j++) { if(j != 1)ans[j * i] += j * i * (eular[j] * j / 2ll); else ans[j * i] += j * i; } int t; scanf("%d", &t); while(t--) { int n; scanf("%d", &n); printf("%lld\n", ans[n]); } return 0;}//277811686426000000
0 0
- SPOJ 5971 lcm sum
- SPOJ 5971 LCM SUM
- spoj LCM Sum
- 【SPOJ】【P5971】【LCM Sum】【题解】【数论】
- SPOJ LCM Sum(积性函数递推+预处理)
- SPOJ 5971 LCM Sum 欧拉函数 (或 莫比乌斯反演?)
- 10791 - Minimum Sum LCM
- uva10791 - Minimum Sum LCM
- 10791 - Minimum Sum LCM
- UVaOJ10791 - Minimum Sum LCM
- Minimum Sum LCM
- UVA10791- Minimum Sum LCM
- UVA10791----Minimum Sum LCM
- uva10791 Minimum Sum LCM
- 10791 - Minimum Sum LCM
- uva10791 Minimum Sum LCM
- spoj5971 LCM Sum
- uva10791 Minimum Sum LCM
- NGINX学习笔记
- 直播技术(从服务端到客户端)一
- Github中的Android时间,日期选择器
- Android LeakCanary
- InputStream读取远程或者网络url时报(文件名、目录名或卷标语法不正确)的错,文件读不出来
- spoj LCM Sum
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- 待看
- Java使用Pipeline对Redis批量读写(hmset&hgetall)
- eclipse NDK开发中找不到头文件解决方法
- easyui-之加载本地数据
- 8.30总结
- Java利用可变参数函数写一个打印方法。
- EasyUI学习总结(六)——EasyUI布局