【BZOJ】2956: 模积和
题意
求\(\sum_{i=1}^{n} \sum_{j=1}^{m} (n \ mod \ i)(m \ mod \ j)[i \neq j] \ mod \ 19940417\), \((n, m \le 10^9)\)
分析
以下均设\(n \le m\)
$$
\begin{align}
&
\sum_{i=1}^{n} \sum_{j=1}^{m} (n \ mod \ i)(m \ mod \ j)[i \neq j] \ mod \ 19940417
\\
\equiv &
\left(
\sum_{i=1}^{n}
\sum_{j=1}^{m}
(n \ mod \ i)(m \ mod \ j)
\sum_{i=1}^{n}
(n \ mod \ i \cdot m \ mod \ i)
\right)
\ mod \ 19940417
\
\equiv &
\left(
\left(
\sum_{i=1}^{n}
(n \ mod \ i)
\right)
\left(
\sum_{j=1}^{m}
(m \ mod \ i)
\right)
\sum_{i=1}^{n}
(n \ mod \ i \cdot m \ mod \ i)
\right)
\ mod \ 19940417
\
\end{align}
于是我们只需要快速求出$\sum_{i=1}^{n} ( n \ mod \ i)$和$\sum_{i=1}^{n} ( n \ mod \ i \cdot m \ mod \ i )$就能解决问题了。
<p>
\]
\begin{align}
& \sum_{i=1}^{n} ( n \ mod \ i)
\
= &
\sum_{i=1}^{n}
\left( n - i \left \lfloor \frac{n}{i} \right \rfloor \right)
\
= &
n^2
\sum_{i=1}^{n}
i \left \lfloor \frac{n}{i} \right \rfloor
\
& \sum_{i=1}^{n} ( n \ mod \ i \cdot \ m \ mod \ i)
\
= &
\sum_{i=1}^{n}
\left( n - i \left \lfloor \frac{n}{i} \right \rfloor \right) \left( m - i \left \lfloor \frac{m}{i} \right \rfloor \right)
\
= &
n^2m
+
\sum_{i=1}^{n}
i^2 \left \lfloor \frac{n}{i} \right \rfloor \left \lfloor \frac{m}{i} \right \rfloor
n\sum_{i=1}^{n}
i \left \lfloor \frac{m}{i} \right \rfloor
m\sum_{i=1}^{n}
i \left \lfloor \frac{n}{i} \right \rfloor
\
\end{align}
## 题解
于是分块大法好...
#include <bits/stdc++.h>
	using namespace std;
	typedef long long ll;
	const int mo=19940417;
	ll cal(int n, ll a) {
		ll ret=a%mo*n%mo, tp=0;
		for(int i=1, pos=0; i<=n; i=pos+1) {
			pos=n/(n/i);
			tp+=(a/i)%mo*(((ll)(pos+1)*pos/2-(ll)(i-1)*i/2)%mo)%mo;
			if(tp>=mo) {
				tp-=mo;
			}
		}
		return (ret-tp+mo)%mo;
	}
	int main() {
		int n, m;
		scanf("%d%d", &n, &m);
		if(n>m) {
			swap(n, m);
		}
		printf("%lld\n", (cal(n, n)*cal(m, m)%mo-cal(n, (ll)n*m)+mo)%mo);
		return 0;
	}\]
【BZOJ】2956: 模积和的更多相关文章
- BZOJ 2956 模积和 (数学推导+数论分块)
		手动博客搬家: 本文发表于20170223 16:47:26, 原地址https://blog.csdn.net/suncongbo/article/details/79354835 题目链接: ht ... 
- BZOJ 2956 模积和
		题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2956 题意:给出n和m.计算: 思路: i64 n,m; i64 cal(i64 m,i ... 
- [Bzoj 2956] 模积和 (整除分块)
		整除分块 一般形式:\(\sum_{i = 1}^n \lfloor \frac{n}{i} \rfloor * f(i)\). 需要一种高效求得函数 \(f(i)\) 的前缀和的方法,比如等差等比数 ... 
- BZOJ 2956 模积和(分块)
		[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2956 [题目大意] 求∑∑((n%i)*(m%j))其中1<=i<=n,1 ... 
- bzoj 2956: 模积和 ——数论
		Description 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j. Input 第一行两个数n,m. Output 一个整数表 ... 
- 【BZOJ】2956:模积和
		Time Limit: 10 Sec Memory Limit: 128 MB Description 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j ... 
- 「BZOJ 2956」模积和
		「BZOJ 2956」模积和 令 \(l=\min(n,m)\).这个 \(i\neq j\) 非常不优雅,所以我们考虑分开计算,即: \[\begin{aligned} &\sum_{i=1 ... 
- BZOJ_2956_模积和_数学
		BZOJ_2956_模积和_数学 Description 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j. Input 第一行两个数 ... 
- P2260 [清华集训2012]模积和
		P2260 [清华集训2012]模积和 整除分块+逆元 详细题解移步P2260题解板块 式子可以拆开分别求解,具体见题解 这里主要讲的是整除分块(数论分块)和mod不为素数时如何求逆元 整除分块:求Σ ... 
随机推荐
- 如何使用Case进行简单判断
			Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ... 
- mxnet环境搭建随记
			安装mxnet还是遇到不少麻烦事,现在简单记一下,挖个坑,后续详细补充,打算写一下我的mxnet探索之旅. 更新: 具体安装mxnet,cuda,opencv过程已经补坑——点击进入 不知道为什么,在 ... 
- MVC4 自定义错误页面(三)
			一.概述 MVC4框架自带了定义错误页,该页面位于Shared/Error,该页面能够显示系统未能捕获的异常,如何才能使用该页面: 二.使用步骤: 1.配置WebConfig文件,在System.We ... 
- 在RedHat.Enterprise.Linux_v6.3系统中安装Oracle_11gR2教程
			在RedHat.Enterprise.Linux_v6.3系统中安装Oracle_11gR2教程 本教程提供PDF格式下载: 在RedHat.Enterprise.Linux_v6.3系统中安装Ora ... 
- ora-01033:oracle initializationg or shutdown in progress 错误提示解决方法
			1.进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID:2.运行sqlplus "/as sysdba" SQL>shutdown immedia ... 
- 3D建模与处理软件简介
			[前言]自半年前笔者发表博客“什么是计算机图形学”以来,时常有人来向笔者询问3D模型的构建方法与工具.笔者的研究方向是以3D技术为主,具体包括3D建模,3D处理及3D打印三个方面,在3D建模与处理方面 ... 
- HTML5头部标签备忘
			DOCTYPE DOCTYPE(Document Type),该声明位于文档中最前面的位置,处于html 标签之前,此标签告知浏览器文档使用哪种HTML 或者XHTML 规范. 推荐使用HTML5 推 ... 
- markdown使用总结
			# markdown简介> Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面. —— [维基百科]( https://zh.w ... 
- 如何安装Ecshop for linux
			下载 http://update.shopex.com.cn/version/program/ECShop/download_ecshop_utf8.php 解压缩之后把upload文件夹中的内容放到 ... 
- util.js
			轻量基础库.方法库 用时可直接拷贝 拆卸式使用 适用于mobile端简单页面 适用于PC简单页面 基于node.php等多种构建方法 (function(M){ /** * 初始化Ajax请求 * @ ... 
