【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=2956

【题目大意】

  求∑∑((n%i)*(m%j))其中1<=i<=n,1<=j<=m,i≠j。

【题解】

   $∑_{i=1}^{n}∑_{j=1}^{m}((n\mod i)*(m\mod j))(i≠j)$
  $=∑_{i=1}^{n}∑_{j=1}^{m}(n-\lfloor \frac{n}{i}\rfloor*i)*(m-\lfloor \frac{m}{j}\rfloor*j)-∑_{i=1}^{min(n,m)}(n-\lfloor \frac{n}{i}\rfloor*i)*(m-\lfloor \frac{m}{i}\rfloor*i)$
  $=∑_{i=1}^{n}(n-\lfloor \frac{n}{i}\rfloor)*∑_{i=1}^{m}(m-\lfloor \frac{m}{i}\rfloor)$
  $-∑_{i=1}^{min(n,m)}n*m-n*\lfloor \frac{m}{i}\rfloor*i-m*\lfloor \frac{n}{i}\rfloor*i+\lfloor \frac{n}{i}\rfloor\lfloor \frac{m}{i}\rfloor*i^2$

  我们对于n/i分段统计即可。

【代码】

#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long LL;
const LL inv6=3323403;
const LL mod=19940417;
LL n,m,ans;
LL sum(LL a,LL b){return (b-a+1)*(a+b)/2%mod;}
LL sum2(LL x){return x*(x+1)%mod*(2*x+1)%mod*inv6%mod;}
LL cal(LL n){
LL res=0;
for(LL l=1,r;l<=n;l=r+1){
r=n/(n/l);
res=(res+n*(r-l+1)%mod-sum(l,r)*(n/l))%mod;
}return (res+mod)%mod;
}
int main(){
while(~scanf("%lld%lld",&n,&m)){
ans=cal(n)*cal(m)%mod;
if(n>m)swap(n,m);
for(int l=1,r;l<=n;l=r+1){
r=min(n/(n/l),m/(m/l));
LL s1=n*m%mod*(r-l+1)%mod;
LL s2=(n/l)*(m/l)%mod*(sum2(r)-sum2(l-1)+mod)%mod;
LL s3=(n/l*m+m/l*n)%mod*sum(l,r)%mod;
ans=(ans-(s1+s2-s3)%mod+mod)%mod;
}printf("%lld\n",ans);
}return 0;
}

  

BZOJ 2956 模积和(分块)的更多相关文章

  1. BZOJ 2956 模积和 (数学推导+数论分块)

    手动博客搬家: 本文发表于20170223 16:47:26, 原地址https://blog.csdn.net/suncongbo/article/details/79354835 题目链接: ht ...

  2. [Bzoj 2956] 模积和 (整除分块)

    整除分块 一般形式:\(\sum_{i = 1}^n \lfloor \frac{n}{i} \rfloor * f(i)\). 需要一种高效求得函数 \(f(i)\) 的前缀和的方法,比如等差等比数 ...

  3. BZOJ 2956 模积和

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2956 题意:给出n和m.计算: 思路: i64 n,m; i64 cal(i64 m,i ...

  4. bzoj 2956: 模积和 ——数论

    Description 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j. Input 第一行两个数n,m. Output 一个整数表 ...

  5. 【BZOJ2956】模积和 分块

    [BZOJ2956]模积和 Description 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j. Input 第一行两个数n,m ...

  6. 【BZOJ】2956: 模积和

    题意 求\(\sum_{i=1}^{n} \sum_{j=1}^{m} (n \ mod \ i)(m \ mod \ j)[i \neq j] \ mod \ 19940417\), \((n, m ...

  7. 【BZOJ】2956:模积和

    Time Limit: 10 Sec  Memory Limit: 128 MB Description 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j ...

  8. 「BZOJ 2956」模积和

    「BZOJ 2956」模积和 令 \(l=\min(n,m)\).这个 \(i\neq j\) 非常不优雅,所以我们考虑分开计算,即: \[\begin{aligned} &\sum_{i=1 ...

  9. P2260 [清华集训2012]模积和 【整除分块】

    一.题目 P2260 [清华集训2012]模积和 二.分析 参考文章:click here 具体的公式推导可以看参考文章.博主的证明很详细. 自己在写的时候问题不在公式推导,公式还是能够比较顺利的推导 ...

随机推荐

  1. YII 框架查询

    基础查询 Customer::find()->one();    此方法返回一条数据: Customer::find()->all();    此方法返回所有数据: Customer::f ...

  2. Sberbank Russian Housing Market比赛总结

    第一次真正意义上参加kaggle比赛,都是工作之余看看别人的kernel,然后整理整理自己的分析代码. 总体来说,本次比赛对我而言更像一个入门比赛,更多的是走走kaggle比赛的整个流程,看看高手们都 ...

  3. 嵌入式 uboot引导kernel,kernel引导fs【转】

    转自:http://www.cnblogs.com/lidabo/p/5383934.html#3639633 1.uboot引导kernel: u-boot中有个bootm命令,它可以引导内存中的应 ...

  4. linux===启动sdk manager下载配置sdk的时候报错的解决办法

    当启动sdk manager下载配置sdk的时候,报错如下: botoo@botoo-virtual-machine:/opt/android-sdk-linux/tools$ sudo  ./and ...

  5. oc 与 swift 之间的桥接文件 (ProjectNmae-Bridging-Header.h) (ProjectNmae-Swift.h)

    oc 与 Swift 是2种不同的语言, oc代码只能写带oc文件里, Swift代码只能写在Swift文件里, 虽然2者不同语言, 但却能互相调用, 不过需要进行一下桥接, 就是下面的2个文件 (P ...

  6. VPS性能综合测试(6):UnixBench跑分工具测试

    测试时间可能会比较长,请耐心等待.最后UnixBench会详细列出各个测试项目的得分情况,以及VPS性能的综合跑分结果 UinxBench 的使用 使用方法如下: Run [ -q | -v ] [- ...

  7. Freemarker中JS取Data-model的值的问题

    不能在表达式中使用js变量,比如: var key = 1; var value = "${stateMap[key]}"; 因为Freemarker是在服务器端进行解析的,此时j ...

  8. redis之(一)redis的简单介绍

    [一]:概念 --->Redis是一个开源的,高性能的,基于键值对的缓存与存储系统 --->Redis数据库中的多有数据都存储在内存中,由于内存的读写速度远快于硬盘,一秒读写超过10万键值 ...

  9. 深入理解计算机(CSAPP)资源汇总

    用于资源记录. 视频: 卡内基梅隆大学 Introduction to Computer Systems CMU 15-213 Fall 作业(labs): Lab Assignments

  10. 半透明AlphaBlend

    AlphaBlend 函数功能:该函数用来显示透明或半透明像素的位图. 函数原型: BOOL AlphaBlend( HDC hdcDest, // handle to destination DC ...