luogu1447 [NOI2010]能量采集
2024-08-30 15:28:26
考虑暴力,答案显然是 \(\sum_{i=1}^n\sum_{j=1}^m(2(\gcd(i,j)-1)+1)=\sum_{i=1}^n\sum_{j=1}^m(2\gcd(i,j)-1)\)。
考虑优化,设 \(f(i)\) 是 \(\gcd(x,y) = i\) 的点的个数,则 \(\sum_{i=1}^{\min(n,m)}f(i)(2i-1)\) 即为答案。
考虑优化 \(f(i)\) 的计算,我们可以先算出 \(i\) 作为公约数的个数 \(\left \lfloor \frac{n}{i} \right \rfloor \left \lfloor \frac{m}{i} \right \rfloor\),然后减去许多个 \(f(j)\) ,其中 \(i < j \leq \min(n,m)\) 并且 \(i|j\)。
#include <iostream>
using namespace std;
typedef long long ll;
int n, m;
ll f[100005], ans;
int main(){
cin>>n>>m;
if(n>m) swap(n, m);
for(int i=n; i; i--){
f[i] = (ll)(n/i) * (ll)(m/i);
for(int j=i+i; j<=n; j+=i)
f[i] -= f[j];
ans += f[i] * (2 * i - 1);
}
cout<<ans<<endl;
return 0;
}
最新文章
- 图的基本遍历算法的实现(BFS &; DFS)复习
- 在web中使用windows控件,实现摄像头功能
- 0.AutoMapper核心
- GitHub上一个不错的开源C#源码(控制台界面开发)
- Hadoop Eclipse开发环境搭建
- 茗洋Easy UI 1.3.2 部分问题解决系列专题[Combo模糊匹配中文问题 修复]
- java equals 心得体会
- stretchlim函数分析
- 房间计费系统改造E-R图纸设计
- MyDAL - .UpdateAsync() 之 .SetSegment 根据条件 动态设置 要更新的字段 使用
- vertx的NetServer模块
- Android studio报Error:(26, 13)-v7:27.错误的解决方法
- select、poll、epoll
- U盘内容被病毒隐藏的解决办法(亲测可用)
- java 封装及this 用法
- 遗传算法MATLAB工具包简介
- hashCode方法的作用?
- putty失活不挂起运行
- [Tensorflow] Object Detection API - predict through your exclusive model
- 上传svn失败,代码冲突解决方式
热门文章
- DP+埃氏筛法 Codeforces Round #304 (Div. 2) D. Soldier and Number Game
- 用eclipse-inst-win64.exe安装eclipse出现Java for Windows Missing 的原因
- Spring Boot整合Spring Batch
- htm 中 <;b>;和<;strong>;的区别
- ios-获取系统相簿里边的所有照片
- PL/SQL学习笔记(三)
- SAP CRM和Cloud for Customer中的Event handler(事件处理器)
- pycharm激活码 pycharm安装后激活方式 pycharm汉化包安装
- Python3简明教程(十二)—— 模块
- 使用snapshot继续训练网络