BZOJ 2226 [Spoj 5971] LCMSum | 数论拆式子
题目:
http://www.lydsy.com/JudgeOnline/problem.php?id=2226
题解:
题目要求的是Σn*i/gcd(i,n) i∈[1,n]
把n提出来变成Σi/gcd(i,n) i∈[1,n] 最后乘个n
设gcd(i,n)==d 我们枚举约数可以得到
∑(∑i/d*(gcd(i,n)==d)) (外面的Σ枚举d)
把i/d这个式子除以d可以得到
Σ( Σj*(gcd(j,n/d)==1) ) (外面Σ枚举d,j与n互质)
由于n/d与d等价
Σ( Σj*(gcd(j,d)==1) ) (外面Σ枚举d,j与n互质)
所以求小于等于i的所有与其互质的自然数之和
利用欧拉函数的性质有结论 : i*φ(i)/2
所以枚举i求解
#include<cstdio>
#define N 2000005
#define MaxN 1000000
typedef long long ll;
using namespace std;
ll phi[N],ans;
bool nonprime[N];
int prime[N],tot,T,n;
int main()
{
phi[]=;
for (int i=;i<=MaxN;i++)
{
if (!nonprime[i])
phi[i]=i-,prime[++tot]=i;
for (int j=;j<=tot;j++)
{
if ((ll)prime[j]*i>MaxN) break;
nonprime[i*prime[j]]=;
if (i%prime[j]==)
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
phi[i*prime[j]]=phi[i]*(prime[j]-);
}
}
for (int i=;i<=MaxN;i++)
phi[i]=phi[i]*i/;
scanf("%d",&T);
while (T--)
{
scanf("%d",&n);ans=;
for (int i=;i*i<=n;i++)
if (n%i==)
{
ans+=phi[i];
if (i*i<n)
ans+=phi[n/i];
}
printf("%lld\n",ans*n);
}
return ;
}
BZOJ 2226 [Spoj 5971] LCMSum | 数论拆式子的更多相关文章
- bzoj 2226: [Spoj 5971] LCMSum 数论
2226: [Spoj 5971] LCMSum Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 578 Solved: 259[Submit][St ...
- BZOJ 2226 [Spoj 5971] LCMSum 最大公约数之和 | 数论
BZOJ 2226 [Spoj 5971] LCMSum 这道题和上一道题十分类似. \[\begin{align*} \sum_{i = 1}^{n}\operatorname{LCM}(i, n) ...
- BZOJ 2226: [Spoj 5971] LCMSum 莫比乌斯反演 + 严重卡常
Code: #pragma GCC optimize(2) #include<bits/stdc++.h> #define setIO(s) freopen(s".in" ...
- BZOJ 2226 [Spoj 5971] LCMSum
题解:枚举gcd,算每个gcd对答案的贡献,贡献用到欧拉函数的一个结论 最后用nlogn预处理一下,O(1)出答案 把long long 打成int 竟然没看出来QWQ #include<ios ...
- BZOJ2226: [Spoj 5971] LCMSum
题解: 考虑枚举gcd,然后问题转化为求<=n且与n互质的数的和. 这是有公式的f[i]=phi[i]*i/2 然后卡一卡时就可以过了. 代码: #include<cstdio> # ...
- 【BZOJ2226】[Spoj 5971] LCMSum 莫比乌斯反演(欧拉函数?)
[BZOJ2226][Spoj 5971] LCMSum Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n ...
- 【bzoj2226】[Spoj 5971] LCMSum 欧拉函数
题目描述 Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes the Leas ...
- bzoj 2226 LCMSum 欧拉函数
2226: [Spoj 5971] LCMSum Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 1123 Solved: 492[Submit][S ...
- 三种做法:BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster
目录 题意 思路 AC_Code1 AC_Code2 AC_Code3 参考 @(bzoj 2780: [Spoj]8093 Sevenk Love Oimaster) 题意 链接:here 有\(n ...
随机推荐
- 系统编程.py(多进程与多线程干货)
1.并发与并行* 多个任务轮换在CPU上跑叫并发* 多个任务在多个CPU上跑,没有交替执行的* 状态叫并行.通常情况下都是并发,即使是多核.* 而控制进程先执行谁后执行谁通过操作系统的调度算法.目前已 ...
- MySQL多表数据查询(DQL)
数据准备: /* ------------------------------------创建班级表------------------------------------ */ CREATE TAB ...
- php file_exists中文路径不存在问题
php的file_exists函数使用中文路径,会显示文件不存在,即使文件已经存在了也会报这个错. 解决方法: <?php $file_name='D://360极速浏览器下载//a.txt'; ...
- 基于设备树的led驱动程序
#include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include ...
- centos编译安装rabbitmq
安装环境 [root@VM_12_50_centos rabbitmq]# uname -a Linux VM_12_50_centos 3.10.0-514.21.1.el7.x86_64 #1 S ...
- ruby Encoding
一. 查看ruby支持的编码 Encoding.name_list 二. 搜索编码 Encoding.find('US-ASCII') #=> US-ASCII,不存在则抛出异常 三. __EN ...
- 抽象类实验:SIM卡抽象
抽象SIM: package sim_package; public abstract class SIM { public abstract String giveNumber(); public ...
- 大数据培训班 cloudera公司讲师面对面授课 CCDH CCAH CCP
大数据助力成就非凡.大数据正在改变着商业游戏规则,为企业解决传统业务问题带来变革的机遇.毫无疑问,当未来企业尝试分析现有海量信息以推动业务价值增值时,必定会采用大数据技术. 目前对大数据的分析工具,首 ...
- Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总
Spring研磨分析.Quartz任务调度.Hibernate深入浅出系列文章笔记汇总 置顶2017年04月27日 10:46:45 阅读数:1213 这系列文章主要是对Spring.Quartz.H ...
- 破解PHPStrom 10 and Pycharm
注册时选择 License server http://idea.lanyus.com/ 然后点击OK Pycharm -- License server http://idea.lanyus.com ...