博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P2260 [清华集训2012]模积和
阅读量:4950 次
发布时间:2019-06-11

本文共 1440 字,大约阅读时间需要 4 分钟。

终于会用$\LaTeX$和Typora啦

$$

\sum_{i=1}^{n}\sum_{j=1}^{m}(n\%i)(m\%j)
$$

$$

\begin{align}
&\sum_{i=1}^{n}n\%i\sum_{j=1}^{m}m\%j\\
&=\sum_{i=1}^{n}(n-\lfloor n/i \rfloor *i)\sum_{j=1}^{m}(m-\lfloor m/j \rfloor *j)
\end{align}
$$

又有i$\neq$j

所以还要求

$$
\begin{align}
\sum_{i=1}^{min(n,m)}(n-\lfloor n/i \rfloor *i)(m-\lfloor m/i \rfloor *i)
\end{align}
$$
展开求,加的项可以直接等差和分块求

涉及$i^2$的项可以用平方求和公式:

$$
\sum_{i=1}^{n}i^{2}=\frac{n(n+1)(2n+1)}{6}
$$
由于本题模数不是质数,不可以用费马小定理解逆元,要先用exgcd或欧拉定理解出inv6

宁可多$\% $也不要少$\% $

 

#include
using namespace std;const int p=19940417;const int inv6=3323403;typedef long long ll;int n,m;ll ans1,ans2,ans3,ans;ll qsum(ll n){ return ((n*(n+1))%p*(2*n+1)%p*inv6)%p;}int main(){ cin>>n>>m; ans1=(ll)n%p*n%p; ans2=(ll)m%p*m%p; for(int i=1;i<=n;i++){ int t=n/i,j=n/t; ans1-=((ll)(i+j)*(j-i+1)/2%p)*t; i=j; ans1%=p; } for(int i=1;i<=m;i++){ int t=m/i,j=m/t; ans2-=((ll)(i+j)*(j-i+1)/2%p)*t; i=j; ans2%=p; } ans3=((ll)min(n,m)*n%p)*m; for(int i=1;i<=min(n,m);i++){ int t1=n/i; int t2=m/i; int j=min(n/t1,m/t2); ans3-=((ll)(i+j)*(j-i+1)/2*t1%p)*m%p; ans3-=((ll)(i+j)*(j-i+1)/2*t2%p)*n%p; ans3+=((ll)(qsum(j)-qsum(i-1))*t1%p)*t2; i=j; ans3=(ans3%p+p)%p; } ans=(ans1*ans2%p-ans3+p)%p; cout<
<

 

转载于:https://www.cnblogs.com/Hikigaya/p/11239281.html

你可能感兴趣的文章
第4.6节 print、import及断言
查看>>
[转载]同步synchronized方法和代码块
查看>>
Python调试器,开发人员的必备技能包!
查看>>
springboot整合jsp
查看>>
DOM中的scrollWidth(Height/Left/Top),offsetWidth(Height/Left/Top)以及clientWidth(Height/Left/Top)...
查看>>
HTML && xml 的区别
查看>>
Python 字符串分割的方法
查看>>
调在线客服临时会话
查看>>
WY C语言 习题
查看>>
Mysql ==》 记录内容(数据)
查看>>
Bzoj1014 外星人Prefix
查看>>
JAVA项目从运维部署到项目开发(一.Jenkins)
查看>>
Apache Rewrite url重定向功能的简单配置
查看>>
hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online
查看>>
GCD多线程机制
查看>>
【2018.5.19】模拟赛之二-ssl2433 文件名排序【字符串】
查看>>
[RxJS] Filtering operator: single, race
查看>>
13、通过Docker-compose快速搭建Wordpress
查看>>
C# 循环读取Excel
查看>>
验证码的存在毫无意义——论人机识别的可行性
查看>>