bzoj 2956 数学展开,分段处理
首先对于答案
ΣΣ(n mod i)*(m mod j) i<>j
也就是Σ(n mod i)Σ(m mod j)-Σ(n mod i)(m mod i)
将mod展开,我们可以得到有floor的式子,对于这种式子,我们可以
利用分段的思想,将O(N)的简化为sqrt(n)的
/**************************************************************
Problem:
User: BLADEVIL
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ //By BLADEVIL
const
d39 =; var
n, m :int64;
ans, ans2 :int64; function min(a,b:int64):int64;
begin
if a>b then min:=b else min:=a;
end; function calc(x,y:int64):int64;
var
i, j :int64;
z :int64;
begin
calc:=;
i:=;
while i<=y do
begin
j:=x div (x div i);
if j>y then j:=y;
z:=((i+j)*(j-i+) div ) mod d39;
calc:=(calc+(z*(x div i) mod d39) mod d39)mod d39;
i:=j+;
end;
end; function sum(x:int64):int64;
var
a, b, c :int64;
begin
if x= then exit();
a:=x; b:=x+; c:=*x+;
if a mod = then a:=a div else
if b mod = then b:=b div else
if c mod = then c:=c div ;
if a mod = then a:=a div else
if b mod = then b:=b div else
if c mod = then c:=c div ;
sum:=a mod d39;
sum:=sum*b mod d39;
sum:=sum*c mod d39;
end; function fuck:int64;
var
i, j :int64;
t1, t2 :int64;
z :int64;
begin
i:=;
fuck:=;
while i<=min(n,m) do
begin
t1:=n div (n div i);
t2:=m div (m div i);
j:=min(t1,t2);
z:=(((sum(j)-sum(i-)) mod d39+d39) mod d39);
z:=(z*(n div i)) mod d39;
z:=(z*(m div i)) mod d39;
fuck:=(fuck+z) mod d39;
i:=j+;
end;
end; begin
read(n,m);
ans2:=calc(m,m) mod d39;
ans2:=((m*m-ans2) mod d39+d39) mod d39;
ans:=((n*n-calc(n,n)) mod d39*ans2) mod d39;
ans2:=(n*m mod d39)*min(n,m) mod d39;
ans2:=(ans2+fuck) mod d39;
ans2:=((ans2-m*calc(n,min(n,m)))mod d39+d39) mod d39;
ans2:=((ans2-n*calc(m,min(n,m)))mod d39+d39) mod d39;
ans:=((ans-ans2) mod d39+d39) mod d39;
writeln(ans);
end.
bzoj 2956 数学展开,分段处理的更多相关文章
- BZOJ 2326 数学作业(分段矩阵快速幂)
实际上,对于位数相同的连续段,可以用矩阵快速幂求出最后的ans,那么题目中一共只有18个连续段. 分段矩阵快速幂即可. #include<cstdio> #include<iostr ...
- bzoj 5334 数学计算
bzoj 5334 数学计算 开始想直接模拟过程做,但模数 \(M\) 不一定为质数,若没有逆元就 \(fAKe\) 掉了. 注意到操作 \(2\) 是删除对应的操作 \(1\) ,相当于只有 \(1 ...
- 「BZOJ 2956」模积和
「BZOJ 2956」模积和 令 \(l=\min(n,m)\).这个 \(i\neq j\) 非常不优雅,所以我们考虑分开计算,即: \[\begin{aligned} &\sum_{i=1 ...
- BZOJ 2956 模积和 (数学推导+数论分块)
手动博客搬家: 本文发表于20170223 16:47:26, 原地址https://blog.csdn.net/suncongbo/article/details/79354835 题目链接: ht ...
- BZOJ 2956 模积和(分块)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2956 [题目大意] 求∑∑((n%i)*(m%j))其中1<=i<=n,1 ...
- BZOJ 2956 模积和
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2956 题意:给出n和m.计算: 思路: i64 n,m; i64 cal(i64 m,i ...
- BZOJ 2326 数学作业(矩阵)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2326 题意:定义Concatenate(1,N)=1234567……n.比如Concat ...
- [Bzoj 2956] 模积和 (整除分块)
整除分块 一般形式:\(\sum_{i = 1}^n \lfloor \frac{n}{i} \rfloor * f(i)\). 需要一种高效求得函数 \(f(i)\) 的前缀和的方法,比如等差等比数 ...
- BZOJ 4173: 数学
4173: 数学 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 462 Solved: 227[Submit][Status][Discuss] D ...
随机推荐
- ARC————自动引用计数
一.内存管理/引用计数 1.引用计数式内存管理的方式(下面四种) 对象操作 OC方法 生成并持有对象 alloc/new/copy/mutableCopyd等方法 持有对象 retain方法 释放对象 ...
- 强大的网络通信框架(实现缓存)--第三方开源--volley
Android Volley是Android平台上很好用的第三方开源网络通信框架.使用简答,功能强大. Android Volley的库jar包Volley.ja下载连接地址:Volley下载 下载后 ...
- 第十章 管理类型(In .net4.5) 之 使用反射
1. 概述 一个.net程序不仅包含代码和数据,还包含 元数据. 本章介绍如何应用attributes以及如何使用反射来获取它,还有如何使用CodeDom和expression trees来实现在运行 ...
- Python核心编程--学习笔记--4--Python对象
现在开始学习Python语言的核心部分.首先了解什么是Python对象,然后讨论最常用的内建类型,接下来讨论标准类型运算符和内建函数,之后给出对标准类型的不同分类方式,最后提一提Python目前还不支 ...
- Supporting Connected Routes to Subnet Zero
Supporting Connected Routes to Subnet Zero IOS allows the network engineer to tell a router to eithe ...
- "大账户"时代
当要下载某文件时,哪怕是免积分,也需要登陆账户才能下载. 当要浏览某论坛时,只有注册账户,才可以浏览帖子. 当要网购商品时,必须注册账户,还要有众多宝宝平台,才可以实现交易. 当要团购时,必须先 ...
- SQL 集合(笔记)
——SQL是关于集合的 oracle是关系型数据,其中的数据表都是有一定规律的数据的一个个集合,所以在使用SQL时,如果能按照集合的思路来进行时会节省很多效率,也鞥让语句更加的清晰明了. 1.四个集合 ...
- malloc calloc realloc,new区别联系以及什么时候用
三个函数的申明分别是:void* realloc(void* ptr, unsigned newsize);void* malloc(unsigned size);void* calloc(size_ ...
- 关于Filezilla是否支持sftp
我们知道filezilla是一个开源的ftp的解决方案,它提供了客户端和服务器端,支持的fpt, sftp, ftps,这是你可以从wiki中看到的关于filezilla的介绍,但是这里需要澄清一点就 ...
- 【转】VNC配置
配置VNC服务参数文件 编辑vncservers文件追加如下 #vi /etc/sysconfig/vncsevers VNCSERVERS="1:root" VNCSERVERA ...