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 ...
随机推荐
- 通过 XML HTTP 把文本文件载入 HTML 元素
新建一个.aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="01-通 ...
- jquery easyui combobox
$("#select_Dic").combobox({ url: "http://www.cnblogs.com/Ajax/ ...
- jquery中的mouseenter实现理解
说在前面:首先说一下两者之间的区别,假设当前元素为element,mouseover事件具有冒泡特性,也就是说无论鼠标是从别的元素移动到element或者是从element的子元素移动到element ...
- PopupWindow的简单使用
测试代码: package com.zzw.testpopuwindows; import android.app.Activity; import android.graphics.Color; i ...
- 发短信的主要代码(SmsManger)
SmsManager smsManager=SmsManager.getDefault(); smsManager.sendTextMessage(number,null,sms, null,null ...
- Vmware下Ubuntu无法上网的问题
本来这个挺简单的个问题,但是由于很久没有使用虚拟机并且期间实体机网络环境发生了一些变化,导致了一些麻烦. 一般用NAT就行了,就是Vmware右下角那个图标(左起第4个)设置就行. 我这么设置了还是不 ...
- 实战Django:官方实例Part5
俗话说,人非圣贤,孰能无过.在堆代码的过程中,即便是老攻城狮,也会写下一些错误的内容.俗话又说,过而能改,善莫大焉.要改,首先要知道哪里存在错误,这便是我们要对投票应用进行测试的原因. 21.撰写 ...
- java clone简单学习
最近在帮忙写单侧的时候,经常会和这几个对象类打交道,因为对java也不是很熟悉,刚好学习一下,都是很浅的学习,并没有深入的去学习哈,因为感觉也用不上. protected Object clone() ...
- hdu 5104 Primes Problem
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5104 Primes Problem Description Given a number n, ple ...
- JavaScript高级程序设计之EventUtil
简单的通用事件方法 var EventUtil = { getEvent: function (e) { return e || window.event; }, getTarget: functio ...