正题

题目链接:https://www.luogu.org/problemnew/show/P2834


题目大意

求∑i=1n∑j=1m(n%i)∗(m%j)∗(i!=j)\sum_{i=1}^n\sum_{j=1}^m(n\%i)*(m\%j)*(i!=j)i=1∑n​j=1∑m​(n%i)∗(m%j)∗(i!=j)


解题思路

∑i=1n(n%i)∗∑j=1m(m%j)−∑i=1min{n,m}(n%i)∗(m%i)\sum_{i=1}^n(n\%i)*\sum_{j=1}^m(m\%j)-\sum_{i=1}^{min\{n,m\}}(n\%i)*(m\%i)i=1∑n​(n%i)∗j=1∑m​(m%j)−i=1∑min{n,m}​(n%i)∗(m%i)
前面的很好求,我们考虑如何求后面的。
单独考虑∑i=1n(n%i)=n2−∑i=1n⌊n/i⌋∗i\sum_{i=1}^{n}(n\%i)=n^2-\sum_{i=1}^n\lfloor n/i\rfloor*ii=1∑n​(n%i)=n2−i=1∑n​⌊n/i⌋∗i
同理∑i=1min{n,m}(n−⌊n/i⌋∗i)∗(m−⌊m/i⌋∗i)\sum_{i=1}^{min\{n,m\}}(n-\lfloor n/i\rfloor*i)*(m-\lfloor m/i\rfloor*i)i=1∑min{n,m}​(n−⌊n/i⌋∗i)∗(m−⌊m/i⌋∗i)
∑i=1min{n,m}n∗m−(m∗⌊n/i⌋+n∗⌊m/i⌋)∗i+⌊m/i⌋∗⌊n/i⌋∗i2\sum_{i=1}^{min\{n,m\}}n*m-(m*\lfloor n/i\rfloor+n*\lfloor m/i\rfloor)*i+\lfloor m/i\rfloor*\lfloor n/i\rfloor*i^2i=1∑min{n,m}​n∗m−(m∗⌊n/i⌋+n∗⌊m/i⌋)∗i+⌊m/i⌋∗⌊n/i⌋∗i2
n∗m∗min{n,m}−∑i=1min{n,m}(m∗⌊n/i⌋+n∗⌊m/i⌋)∗i−⌊m/i⌋∗⌊n/i⌋∗i2n*m*min\{n,m\}-\sum_{i=1}^{min\{n,m\}}(m*\lfloor n/i\rfloor+n*\lfloor m/i\rfloor)*i-\lfloor m/i\rfloor*\lfloor n/i\rfloor*i^2n∗m∗min{n,m}−i=1∑min{n,m}​(m∗⌊n/i⌋+n∗⌊m/i⌋)∗i−⌊m/i⌋∗⌊n/i⌋∗i2
然后除了i2i^2i2其他用整体分块都好求,之后我们考虑如何求∑i=1min{n,m}i2\sum_{i=1}^{min\{n,m\}} i^2∑i=1min{n,m}​i2

∑i=1min{n,m}i2=i∗(i+1)∗(2∗i+1)6\sum_{i=1}^{min\{n,m\}} i^2=\frac{i*(i+1)*(2*i+1)}{6}i=1∑min{n,m}​i2=6i∗(i+1)∗(2∗i+1)​

数学归纳法

∑i=1min{n,m}x2=x∗(x+1)∗(2∗x+1)6\sum_{i=1}^{min\{n,m\}} x^2=\frac{x*(x+1)*(2*x+1)}{6}i=1∑min{n,m}​x2=6x∗(x+1)∗(2∗x+1)​
(∑i=1min{n,m}x2)+(x+1)2=x∗(x+1)∗(2∗x+1)6+(x+1)2(\sum_{i=1}^{min\{n,m\}} x^2)+(x+1)^2=\frac{x*(x+1)*(2*x+1)}{6}+(x+1)^2(i=1∑min{n,m}​x2)+(x+1)2=6x∗(x+1)∗(2∗x+1)​+(x+1)2
=>(x+1)∗(2∗x2+x)+6(x+1)26=>\frac{(x+1)*(2*x^2+x)+6(x+1)^2}{6}=>6(x+1)∗(2∗x2+x)+6(x+1)2​
=>(x+1)∗(2∗x2+7x+6)6=>\frac{(x+1)*(2*x^2+7x+6)}{6}=>6(x+1)∗(2∗x2+7x+6)​
=>(x+1)∗(x+2)∗(2∗x+3)6=>\frac{(x+1)*(x+2)*(2*x+3)}{6}=>6(x+1)∗(x+2)∗(2∗x+3)​
=>(x+1)∗(x+2)∗(2∗(x+1)+1)6=>\frac{(x+1)*(x+2)*(2*(x+1)+1)}{6}=>6(x+1)∗(x+2)∗(2∗(x+1)+1)​

证毕


codecodecode

#include<cstdio>
#include<algorithm>
#define ll long long
#define sum(l,r) ((l+r)*(r-l+1)/2)
using namespace std;
const int XJQ=1e9+7;
ll n,m,ans;
ll Qs(ll n,ll k)
{ll ans=0;for(ll x=1,gx;x<=min(n,k);x=gx+1){gx=min(k/(k/x),n);(ans+=(k/x)*sum(x,gx)%XJQ)%=XJQ;}return ans%XJQ;
}
ll lx(ll x)
{return x*(x+1)%XJQ*(2*x+1)%XJQ*166666668%XJQ;
}
int main()
{scanf("%lld%lld",&n,&m);if(m>n) swap(n,m);ans=(n*n-Qs(n,n))%XJQ;ans=(m*m-Qs(m,m))%XJQ*ans%XJQ;ans=(ans+Qs(m,m)*n%XJQ)%XJQ;ans=(ans+Qs(m,n)*m%XJQ)%XJQ;ans=(ans-m*m%XJQ*n%XJQ+XJQ)%XJQ;int tmp=0;for(ll i=1,dn,dm,next;i<=m;i=next+1){dm=m/i;dn=n/i;next=min(n/dn,m/dm);(tmp+=(lx(next)-lx(i-1))*dn%XJQ*dm%XJQ)%=XJQ;}printf("%lld",(ans-tmp+XJQ)%XJQ);
}

P2834-能力测验【数论,整除分块】相关推荐

  1. 模板 - 数论 - 整除分块

    //整除分块,n版 ll aliquot_patition(int n) {ll ans=0;for(int l=1,r; l<=n; l=r+1) {r=n/(n/l);ans+=1ll*(n ...

  2. lightoj 1098 A New Function 约数之和(一道奇怪的数论) 整除分块优化

    文章目录 题目如下: 思考人生: 题目如下: lightoj 1098 A New Function 求1-n所有数的所有约数之和(不包括1和它本身).n<=2e9. 思考人生: 首先考虑打表找 ...

  3. P2260 [清华集训2012]模积和,P2834 能力测验(二维除法分块)

    P2260 [清华集训2012]模积和 推导过程 我们假定n<=mn <= mn<=m ∑i=1n∑j=1m(nmodi)(mmodj),i≠j\sum_{i = 1} ^{n} ...

  4. 【数论】整除分块(数论分块)

    目录 引入 找规律 分块数量(时间复杂度分析) 分块边界 模板 例题 1.约束研究 2.约数和 3.余数求和 4.Fear Factoring 5.Floor and Mod 引入 整除分块是数论问题 ...

  5. [CQOI2017] 小Q的表格(分块 + 整除分块 + 数学 + 前缀和)

    problem luogu-P3700 solution f(a,b)=f(b,a)f(a,b)=f(b,a)f(a,b)=f(b,a) 意味着我们只用考虑半个棋盘的信息. b∗f(a,a+b)=(a ...

  6. 7-2 整除分块 (15 分)

    7-2 整除分块 (15 分) 整除分块,又称数论分块.是数论算法中的重要技巧,你可以在各种需要枚举因子的连续求和类问题中见到它的身影.如杜教筛,莫比乌斯反演化简后的整除分段求和等. 整除分块基于这样 ...

  7. 2021牛客寒假算法基础集训营2 D.牛牛与整除分块

    2021牛客寒假算法基础集训营2 D.牛牛与整除分块 题目链接 题目描述 整除分块,又称数论分块.是数论算法中的重要技巧,你可以在各种需要枚举因子的连续求和类问题中见到它的身影.如杜教筛,莫比乌斯反演 ...

  8. SDOI2015 约数个数和(莫比乌斯反演经典、双上限整除分块)超详细笔记

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 AcWing 1358. 约数个数和(莫比乌斯反演经典.双上限整除分块) #include <c ...

  9. luogu P3455 [POI2007]ZAP-Queries (莫比乌斯反演 + 整除分块)

    整理的算法模板合集: ACM模板 题目传送门 本题中数据为5e4,我们只需要筛一次5e4就行了. 双倍经验的P4450 双亲数中数据达到了1e6,我们直接筛1e6的莫比乌斯函数有点不可取,因为只有一组 ...

  10. P3935 Calculating 整除分块

    传送门 文章目录 题意: 思路: 题意: 思路: 我们设s(x)=∑i=1nf(x)s(x)=\sum_{i=1}^nf(x)s(x)=∑i=1n​f(x),那么答案就是s(r)−s(l−1)s(r) ...

最新文章

  1. C语言试卷终稿,C语言试卷终稿B1.doc
  2. 非 985/211 学校的毕业生,进大厂的机率有多大?
  3. centos 7 部署 open-falcon 0.2.0
  4. Linux(RHEL7及CentOS7)下glibc版MySQL5.7.20的安装
  5. SegmentFault Hackathon 文艺复兴
  6. 由塔科马大桥事件 谈软件架构
  7. Android 基础 —— 活动的生存周期
  8. LeetCode 562. 矩阵中最长的连续1线段(DP)
  9. mysql 二进制日志变化_MySQL运维之二进制日志
  10. oracle11g scn 补丁,Oracle11g中SCN与TimeStamp的相互转换
  11. §4.1.2数学归纳法证明不等式第6题 (复旦大学2004年保送生考试数学试题)
  12. 《Python编程初学者指南》——第1章 启程:Game Over程序 1.1 剖析Game Over程序
  13. android studio 如何修改app名字、修改app图标
  14. Cypress 简介
  15. Fortigate(飞塔)防火墙密码恢复
  16. nw.js html5,nw.js 如何使用?
  17. CSAPP实验记录(二)Bomb Lab
  18. html文件只能打印一页,javascript – 使用window.print()打印巨大的表只打印一页
  19. windows下python运行的方法
  20. VS中编译带Qt的他人项目,环境搭建及解决报错

热门文章

  1. 牛逼!不得不服,第一次有人把Java 反射机制讲解这么透!
  2. antd request 通过jsessionid传参数_Umi-request源码阅读
  3. MYSQL数据库表大小计算,计算mysql数据库数据表的大小,不精确,只是大略的数据...
  4. 计算机原理试题b,计算机组成原理试题B答案
  5. matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...
  6. 加密封装 怎么把_不要再封装各种Util工具类了,这个神级框架值得拥有!
  7. PTA 数据结构与算法题目集(中文)
  8. [C++11]可调用对象包装器function
  9. hdu4841 圆桌问题-vector容器模拟
  10. word List 30