BZOJ1257: [CQOI2007]余数之和——整除分块
2024-08-27 09:36:08
题意
求 $\sum _{i=1}^n k \ mod \ i$($1\leq n,k\leq 10^9$).
分析
数据范围这么大 $O(n)$ 的复杂度也挺不住啊
根据取模的意义,$k \ mod \ i = k - \left \lfloor \frac{k}{i} \right \rfloor * i$,
因此可以用整除分块,注意分类讨论 $k$ 与 $n$ 的关系。
#include<bits/stdc++.h>
using namespace std; typedef long long ll;
int n, k; ll solve()
{
ll ret = 1LL * n * k;
if(k <= n) //需要分类讨论
{
for(int i = ,j;i <= k;i = j+)
{
j = k / (k / i); ret -= 1LL * (i+j) * (j-i+) / * (k / i);
}
}
else
{
for(int i = ,j;i <= n;i = j+)
{
j = min(k / (k / i), n);
ret -= 1LL * (i+j) * (j-i+) / * (k / i);
}
} return ret;
} int main()
{
scanf("%d%d", &n, &k);
printf("%lld\n", solve());
return ;
}
参考链接:https://zhuanlan.zhihu.com/p/77687419
最新文章
- eclipse下查看maven下载的源码中文乱码问题
- C#夯实基础系列之字符串
- asp.net(C#)利用QRCode生成二维码(续)-在二维码图片中心加Logo或图像
- ThoughtWorks持续集成平台GO开源了
- 原生+jquery 实现好看滚动条。
- .net开发微信公众平台
- Monyer.cn黑客小游戏
- oracle数据库中提供的5种约束
- vm.dirty_background_ratio and vm.dirty_ratio
- 浅谈Javascript 数组与字典
- java StringBuffer与StringBuilder
- 中文乱码 $dbh->;do(";SET NAMES utf8";);
- WordPress BackWPup插件‘tab’参数跨站脚本漏洞
- 杀掉linux所有进程的命令
- CPU卡中T=0通讯协议的分析与实现
- Material 字体样式与排版
- InnoDB的行溢出数据,Char的行结构存储
- 利用 ProtoThreads实现Arduino多线程处理(1)
- Redis入门及主从配置
- Visual Studio 项目模板制作(一)