【数论】能量采集(P1447)
正题
P1447
题目大意
给出n,m,求2×∑i=1n∑j=1m(gcd(i,j)−1)+n×m2\times \sum_{i=1}^n\sum_{j=1}^m(gcd(i,j)-1)+n\times m2×i=1∑nj=1∑m(gcd(i,j)−1)+n×m
解题思路
2×∑i=1n∑j=1m(gcd(i,j)−1)+n×m2×∑i=1n∑j=1mgcd(i,j)−n×m2\times \sum_{i=1}^n\sum_{j=1}^m(gcd(i,j)-1)+n\times m \\ 2\times \sum_{i=1}^n\sum_{j=1}^mgcd(i,j)-n\times m 2×i=1∑nj=1∑m(gcd(i,j)−1)+n×m2×i=1∑nj=1∑mgcd(i,j)−n×m
那么求出∑i=1n∑j=1mgcd(i,j)\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)∑i=1n∑j=1mgcd(i,j)就好了
∑i=1n∑j=1mgcd(i,j)∑d=1nd∑i=1n/d∑j=1m/d[gcd(i,j)=1]∑d=1nd∑i=1n/d∑j=1m/d∑c∣i,c∣jμ(c)∑d=1nd∑c=1min(n/d,m/d)μ(c)×⌊ncd⌋×⌊mcd⌋\sum_{i=1}^n\sum_{j=1}^mgcd(i,j) \\ \sum_{d=1}^nd\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[gcd(i,j)=1] \\ \sum_{d=1}^nd\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}\sum_{c|i,c|j}\mu(c) \\ \sum_{d=1}^nd\sum_{c=1}^{min(n/d,m/d)}\mu(c)\times\left\lfloor\frac{n}{cd}\right\rfloor\times\left\lfloor\frac{m}{cd}\right\rfloor i=1∑nj=1∑mgcd(i,j)d=1∑ndi=1∑n/dj=1∑m/d[gcd(i,j)=1]d=1∑ndi=1∑n/dj=1∑m/dc∣i,c∣j∑μ(c)d=1∑ndc=1∑min(n/d,m/d)μ(c)×⌊cdn⌋×⌊cdm⌋
考虑枚举cd,设k=cd
∑k=1n⌊nk⌋⌊mk⌋∑d∣kd×μ(k/d)\sum_{k=1}^n\left\lfloor\frac{n}{k}\right\rfloor\left\lfloor\frac{m}{k}\right\rfloor\sum_{d|k}d\times\mu(k/d) k=1∑n⌊kn⌋⌊km⌋d∣k∑d×μ(k/d)
因为有μ×id=φ\mu\times id=\varphiμ×id=φ
所以原式等于
∑k=1n⌊nk⌋⌊mk⌋φ(k)\sum_{k=1}^n\left\lfloor\frac{n}{k}\right\rfloor\left\lfloor\frac{m}{k}\right\rfloor\varphi(k)k=1∑n⌊kn⌋⌊km⌋φ(k)
可以整除分块
时间复杂度 O(n+n)O(n+\sqrt{n})O(n+n)
code
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 100100
using namespace std;
ll n,m,w,ans,p[N],phi[N],prime[N];
const ll MX=1e5;
void work()
{phi[1]=1;for(ll i=2;i<=MX;++i){if(!p[i]){prime[++w]=i;phi[i]=i-1;}for(ll j=1;j<=w&&i*prime[j]<=MX;++j){p[i*prime[j]]=1;if(i%prime[j]==0){phi[i*prime[j]]=phi[i]*prime[j];break;}else phi[i*prime[j]]=phi[i]*(prime[j]-1);}}for(ll i=2;i<=n;++i)phi[i]+=phi[i-1];return;
}
int main()
{scanf("%lld%lld",&n,&m);work();for(ll l=1,r=0;l<=min(n,m);l=r+1){r=min(n/(n/l),m/(m/l));ans+=(phi[r]-phi[l-1])*(n/l)*(m/l);}printf("%lld",ans*2-n*m);return 0;
}
【数论】能量采集(P1447)相关推荐
- (每日一题)P1447 [NOI2010] 能量采集(莫反套路 + 欧拉反演 / 容斥原理)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.19 莫反 Problem Solu ...
- P1447 [NOI2010]能量采集(mobius反演)
P1447 [NOI2010]能量采集 式子化简 显然题目就是要我们求∑i=1n∑j=1m2gcd(i,j)−1\sum_{i = 1} ^{n} \sum_{j = 1} ^{m} 2gcd(i, ...
- P1447 [NOI2010] 能量采集
P1447 [NOI2010] 能量采集 题意: 如果一棵植物与能量汇集机器(坐标为0,0)连接而成的线段上有 k 棵植物,则能量的损失为 2k + 1 给你一个n*m的植物园,问能量损失是多少 1& ...
- BZOJ 2005: [Noi2010]能量采集( 数论 + 容斥原理 )
一个点(x, y)的能量损失为 (gcd(x, y) - 1) * 2 + 1 = gcd(x, y) * 2 - 1. 设g(i)为 gcd(x, y) = i ( 1 <= x <= ...
- [NOI2010]能量采集
469. [NOI2010]能量采集 ★★☆ 输入文件:energy2010.in 输出文件:energy2010.out 简单对比 时间限制:1 s 内存限制:512 MB [问题描 ...
- bzoj2005: [Noi2010]能量采集
不知道什么算法. 首先求一颗植物(i,j)与能量采集器的连线上有几颗植物. 答案是(gcd(i,j)-1),设i'= i/gcd(i,j),j'=j/gcd(i,j). 则这几颗植物是(i'k,j'k ...
- BZOJ-2005能量采集-数论函数
很入门的数论函数题目.我还是wa了一发(爆long long 了) 对于每个位置x,y,在他们和能量采集器中间的植物为gcd(x,y)-1,[在他们之间说明斜率相同,而和他们斜率相同的就是所有gcd( ...
- 能量采集(HYSBZ-2005)
Problem Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. ...
- bz2005 2005: [Noi2010]能量采集 数学题
2005: [Noi2010]能量采集 Time Limit: 10 Sec Memory Limit: 552 MB Submit: 2494 Solved: 1475 [Submit][Sta ...
- 能量收集matlab程序_深港微电子学院汪飞课题组在Sensors and Actuators A: Physical上发表双谐振能量采集器论文...
深港微电子学院汪飞课题组在压电能量采集器领域取得突破性进展.他们仿真并制备了一种基于PVDF材料的双共振压电薄膜能量采集器,其谐振频率为15 Hz和22 Hz.在 9.81 的加速度下,器件带宽扩展 ...
最新文章
- python面试-Python面试
- UI开发模式-容器模式
- [Linux实用工具]Ubuntu环境下SSH的安装及使用
- 查询缓存---Mybatis学习笔记(十)
- SAP odata get metadata in QHD - still has cache logic
- 烂泥:【解决】word复制windows live writer没有图片
- 【OpenCV】入门学习资料汇总
- 使用spring的JavaMailSender发送邮件
- 饮食与癌细胞代谢的分子联系
- 459.重复的子字符串
- t470键盘拆解_做工保持良好水准 ThinkPad T470笔记本拆机解析
- 苹果计算机 win10,图文教程!苹果电脑和WIN10的完美融合井井有条的美
- tfidf处理代码_tfidf代码简单实现
- pentaho资源库迁移-MySQL
- 系统优化的基本思想点
- 最新彻底禁止win10自动更新
- Excel2007无法卸载:安装程序包的语言不受系统支持。微软的卸载程序也不行。——只能手工删除
- matlab二项式,动态规划 – 计算二项式系统 —MATLAB代码 – 算法网
- 纯css实现翻书效果
- 最新版本maven引发的血案
热门文章
- 机器学习与气象数据_气象大数据与机器学习联合实验室 大数据和气象的“联姻”...
- 中科大计算机是一流学科吗,安徽2017双一流学科排行榜:中国科技大学第一
- 2020计算机单招的大专,2020专科和单招的区别
- 微型计算机硬件采用什么,微型计算机的硬件系统包括什么?
- leetcote34. 在排序数组中查找元素的第一个和最后一个位置
- 7-3 最短路径 (20 分)(分支限界+思路+详解)
- dptcpp 题目 2352: [信息学奥赛一本通-T1440]数的划分-dp
- 算法-排序-选择排序
- 题目 1885: [蓝桥杯][2017年第八届真题]分巧克力+二分
- 算法---会议最大安排问题