BZOJ 2956 模积和
题目链接:模积和
这种有模运算的题一般都要把取模运算给去掉,改成除法取下整的模式。即\(a\bmod b=a-\lfloor \frac{a}{b} \rfloor b\)
然后我们先把\(i=j\)的也统计进答案,最后再减去即可。接下来就是推式子时间(\(n \le m\)):
\begin{aligned}
&\sum_{i=1}^n\sum_{j=1}^m(n \bmod i)(m \bmod j) \\
=&\sum_{i=1}^n(n \bmod i)\sum_{j=1}^m(m \bmod j) \\
=&\sum_{i=1}^n(n-i\lfloor \frac{n}{i} \rfloor)\sum_{j=1}^m(m-j\lfloor \frac{m}{j} \rfloor) \\
=&(n^2-\sum_{i=1}^ni\lfloor \frac{n}{i} \rfloor)(m^2-\sum_{i=1}^mi\lfloor \frac{m}{i} \rfloor)
\end{aligned}
\begin{aligned}
&\sum_{i=1}^n(n \bmod i)(m \bmod i) \\
=&\sum_{i=1}^n(n-i\lfloor \frac{n}{i} \rfloor)(m-i\lfloor \frac{m}{i} \rfloor) \\
=&n^2m-m\sum_{i=1}^ni\lfloor \frac{n}{i} \rfloor-n\sum_{i=1}^ni\lfloor \frac{m}{i} \rfloor+\sum_{i=1}^n\lfloor \frac{n}{i} \rfloor\lfloor \frac{m}{i} \rfloor i^2
\end{aligned}
然后分块计算即可。上下两个式子一减就是答案。
下面贴代码:
#include<cstdio>
#define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
#define mod 19940417
#define llg long long
#define min(a,b) (a<b?a:b)const int n6=7776;
int n,m,a[3];llg S(int x){return (1ll*x*(x+1)>>1)%mod;}
llg S2(int x){a[0]=x,a[1]=x+1,a[2]=2*x+1;for(int i=0;i<3;i++) if(a[i]%2==0){a[i]/=2;break;}for(int i=0;i<3;i++) if(a[i]%3==0){a[i]/=3;break;}return 1ll*a[0]*a[1]%mod*a[2]%mod;
}llg work(int x,int y){llg now=0;for(int i=1,nt;i<=x;i=nt+1)nt=min(y/(y/i),x),now+=1ll*(y/i)*(S(nt)-S(i-1));return now%mod;
}int main(){File("a");scanf("%d %d",&n,&m);if(n>m) n^=m^=n^=m;llg s1=work(n,n),ans;ans=(1ll*n*n-s1)%mod*(1ll*m*m%mod-work(m,m))%mod;ans+=s1*m+work(n,m)*n; ans%=mod;ans-=1ll*n*n%mod*m; ans%=mod;for(int i=1,nt;i<=n;i=nt+1){nt=min(n/(n/i),m/(m/i));ans-=(S2(nt)-S2(i-1))*(m/i)%mod*(n/i);ans%=mod;}printf("%lld",(ans+mod)%mod);return 0;
}
转载于:https://www.cnblogs.com/lcf-2000/p/6811864.html
BZOJ 2956 模积和相关推荐
- BZOJ 2956 模积和(分块)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2956 [题目大意] 求∑∑((n%i)*(m%j))其中1<=i<=n,1 ...
- BZOJ2956 (模积和)
题目:2956: 模积和 题意:求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j.然后mod 19940417 本题坑我太久啊,思路: ...
- P2260 [清华集训2012]模积和,P2834 能力测验(二维除法分块)
P2260 [清华集训2012]模积和 推导过程 我们假定n<=mn <= mn<=m ∑i=1n∑j=1m(nmodi)(mmodj),i≠j\sum_{i = 1} ^{n} ...
- 数论分块专题复习(余数求和+模积和+Ice Rain+The Fool)
文章目录 前提知识复习 T1:余数求和 title solution code T2:Ice Rain title solution code T3:The Fool title solution c ...
- 一句话题解(20170801~20170125)
8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...
- [颓废史]蒟蒻的刷题记录
QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...
- 2019.4.summary
2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...
- 数论与数学专题练习(一)(201802~201805)
数论与数学专题练习(一)(201802~201805) 手动博客搬家: 本文发表于20180224 00:33:28, 原地址https://blog.csdn.net/suncongbo/artic ...
- 银联高校极客挑战赛 初赛 第一场、第二场合集(3+3题)
第一场 A. 码队女朋友的王者之路 测试用例 测试1 4 5 2 2 00101 5 1 2 11110 6 2 3 000000 7 6 6 0000001 测试2 1 1 1 1 0 测试3 1 ...
最新文章
- gffread处理工具
- 超酷实用的jQuery焦点图赏析及源码
- 洛谷 P1690 贪婪的Copy
- 007_Curator框架二
- python列表元素零的移动_python列表多行
- python django升级安装sqlite3后在python命令行还是显示旧版本的解决办法
- [Qt教程] 第43篇 进阶(三)对象树与拥有权
- iOS9 白名单问题 -canOpenURL: failed for URL: xx - error:This app is not allowed to query for scheme x...
- hazelcast_Java:如何在不到5分钟的时间内通过Hazelcast提高生产力
- jboss eap 7_使用JBoss EAP 7的HTTP / 2
- 2017.4.22 loli测试
- python 多线程就这么简单(续)
- MEF入门之不求甚解,但力求简单能讲明白(四)
- oc21--super
- CASS9.1计算土方量实例
- 小程序会话服务器,完美解决小程序session问题
- Linux shell中21的含义解释 (全网最全,看完就懂)
- Transformer相关的各种预训练模型优点缺点对比总结与资料收集(Transformer/Bert/Albert/RoBerta/ERNIE/XLnet/ELECTRA)
- Oracle学习(八)——————————————子查询
- 【微机原理 实验】可编程外围接口芯片8255(4)(硬件-含汇编代码)
热门文章
- 音创a55怎么安装系统_教您怎么用光驱重装系统,安装系统教程!
- python __repr__
- Java MyBatis 别名
- 微投抖的1080_1080P不到三千元 微投价格战竟如此激烈
- 常常被人忽略的VC备份
- 技术分享——机房搬迁工作步骤及方案详解
- Css学习总结(4)——CSS选择器总结
- Java基础学习总结(94)——Java线程再学习
- Maven学习总结(3)——使用Maven构建项目
- android php实时聊天工具,Android_Android 应用APP加入聊天功能,简介
自去年 LeanCloud 发布实时 - phpStudy...