IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 洛谷P2260 [清华集训2012]模积和 题解 -> 正文阅读

[数据结构与算法]洛谷P2260 [清华集训2012]模积和 题解

洛谷P2260 [清华集训2012]模积和 题解

题目链接:P2260 [清华集训2012]模积和

题意


( ∑ i = 1 n ∑ j = 1 m ( n ? m o d ? i ) × ( m ? m o d ? j ) , i ≠ j ) m o d ?? 19940417 \left(\sum_{i=1}^{n}\sum_{j=1}^{m}(n\bmod i)\times(m\bmod j),i\ne j \right) \mod 19940417 (i=1n?j=1m?(nmodi)×(mmodj),i?=j)mod19940417

根据容斥原理
∑ i = 1 n ∑ j = 1 m ( n ? m o d ? i ) × ( m ? m o d ? j ) , i ≠ j = ∑ i = 1 n ∑ j = 1 m ( n ? m o d ? i ) × ( m ? m o d ? j ) ? ∑ i = 1 n ( n ? m o d ? i ) × ( m ? m o d ? i ) \sum_{i=1}^{n}\sum_{j=1}^{m}(n\bmod i)\times(m\bmod j),i\ne j \\= \sum_{i=1}^{n}\sum_{j=1}^{m}(n\bmod i)\times(m\bmod j) - \sum_{i=1}^{n}(n\bmod i)\times(m\bmod i) i=1n?j=1m?(nmodi)×(mmodj),i?=j=i=1n?j=1m?(nmodi)×(mmodj)?i=1n?(nmodi)×(mmodi)
然后推推柿子
∑ i = 1 n ∑ j = 1 m ( n ? m o d ? i ) × ( m ? m o d ? j ) ? ∑ i = 1 n ( n ? m o d ? i ) × ( m ? m o d ? i ) = ∑ i = 1 n ( n ? i ? n i ? ) × ∑ j = 1 m ( m ? j ? m j ? ) ? ∑ i = 1 n ( n ? i ? n i ? ) × ( m ? i ? m i ? ) = ( n 2 ? ∑ i = 1 n i ? n i ? ) × ( m 2 ? ∑ i = 1 m i ? m i ? ) ? ∑ i = 1 n ( n m ? m i ? n i ? ? n i ? m i ? + i 2 ? n i ? ? m i ? ) = ( n 2 ? ∑ i = 1 n i ? n i ? ) × ( m 2 ? ∑ i = 1 m i ? m i ? ) ? n 2 m + ∑ i = 1 n ( m i ? n i ? + n i ? m i ? ? i 2 ? n i ? ? m i ? ) \begin{aligned} &\sum_{i=1}^{n}\sum_{j=1}^{m}(n\bmod i)\times(m\bmod j) - \sum_{i=1}^{n}(n\bmod i)\times(m\bmod i) \\&=\sum_{i=1}^{n}\left(n-i\left\lfloor{\dfrac{n}{i}}\right\rfloor\right)\times\sum_{j=1}^{m}\left(m-j\left\lfloor{\dfrac{m}{j}}\right\rfloor\right) - \sum_{i=1}^{n}\left(n-i\left\lfloor{\dfrac{n}{i}}\right\rfloor\right)\times\left(m-i\left\lfloor{\dfrac{m}{i}}\right\rfloor\right) \\&=\left(n^2-\sum_{i=1}^{n}i\left\lfloor{\dfrac{n}{i}}\right\rfloor\right)\times\left(m^2-\sum_{i=1}^{m}i\left\lfloor{\dfrac{m}{i}}\right\rfloor\right)-\sum_{i=1}^{n}\left(nm-mi\left\lfloor{\dfrac{n}{i}}\right\rfloor-ni\left\lfloor{\dfrac{m}{i}}\right\rfloor+i^2\left\lfloor{\dfrac{n}{i}}\right\rfloor\left\lfloor{\dfrac{m}{i}}\right\rfloor\right) \\&=\left(n^2-\sum_{i=1}^{n}i\left\lfloor{\dfrac{n}{i}}\right\rfloor\right)\times\left(m^2-\sum_{i=1}^{m}i\left\lfloor{\dfrac{m}{i}}\right\rfloor\right)-n^2m+\sum_{i=1}^{n}\left(mi\left\lfloor{\dfrac{n}{i}}\right\rfloor+ni\left\lfloor{\dfrac{m}{i}}\right\rfloor-i^2\left\lfloor{\dfrac{n}{i}}\right\rfloor\left\lfloor{\dfrac{m}{i}}\right\rfloor\right) \end{aligned} ?i=1n?j=1m?(nmodi)×(mmodj)?i=1n?(nmodi)×(mmodi)=i=1n?(n?i?in??)×j=1m?(m?j?jm??)?i=1n?(n?i?in??)×(m?i?im??)=(n2?i=1n?i?in??)×(m2?i=1m?i?im??)?i=1n?(nm?mi?in???ni?im??+i2?in???im??)=(n2?i=1n?i?in??)×(m2?i=1m?i?im??)?n2m+i=1n?(mi?in??+ni?im???i2?in???im??)?
有一个小的公式,这里就不证明了(逃
∑ i = 1 n i 2 = n ( n + 1 ) ( 2 n + 1 ) 6 \sum_{i=1}^{n}i^2 = \dfrac{n(n+1)(2n+1)}{6} i=1n?i2=6n(n+1)(2n+1)?
然后到这里就没啥难度了

考虑数论分块

代码如下

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int p=19940417;
const int inv2=9970209;
const int inv6=3323403;
#define sum1(x) ((x)%p*(x+1)%p*inv2%p)
#define sum2(x) ((x)%p*(x+1)%p*(2*(x)%p+1)%p*inv6%p)
int solve(int x)
{
    int res=x%p*x%p;
    for(int l=1,r; l<=x; l=r+1)
    {
        r=x/(x/l);
        res=(res-(sum1(r)-sum1(l-1))%p*(x/l)%p)%p;
    }
    return res;
}
int n,m,a,b,c,ans;
signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin >> n >> m;
    if(n>m)swap(n,m);
    ans=(solve(n)*solve(m)%p-n%p*n%p*m%p)%p;
    for(int l=1,r; l<=n; l=r+1)
    {
        r=min(n/(n/l),m/(m/l));
        a=(a+(sum1(r)-sum1(l-1))%p*m%p*(n/l)%p)%p;
        b=(b+(sum1(r)-sum1(l-1))%p*n%p*(m/l)%p)%p;
        c=(c+(sum2(r)-sum2(l-1))%p*(n/l)%p*(m/l)%p)%p;
    }ans=((ans+a+b-c)%p+p)%p;
    cout << ans << endl;
    return 0;
}

转载请说明出处

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:39:00  更:2022-05-11 16:39:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:45:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码