【题目链接】 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. 有关计数问题的dp

    问题一:划分数 问题描述 有n个去区别的物体,将它们划分成不超过m组,求出划分方法数模M的余数. 我们定义dp[i][j],表示j的i划分的总数 将j划分成i个的话,可以先取出k个,然后将剩下的j-k ...

  2. 24、redis中的sentinel的作用?

    redis中的sentinel的作用? Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Re ...

  3. Nodejs mac版安装

    Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven ...

  4. Centos 7 安装jdk1.7

    在linux中安装jdk是很平凡的事情了,刚学习linux给自己留下一笔记.刚安装centos其中可以会附带jdk,但是这并不影响,只要下载自己的jdk然后替换相对应的环境变量即可. 1.下载相对应的 ...

  5. select下拉箭头改变,兼容ie8/9

    各个浏览器下select默认的下拉箭头差别较大,通常会清除默认样式,重新设计 <html> <head> <meta charset="utf-8"& ...

  6. oracle中有关表的操作

    在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 : select table_name from user_ ...

  7. Spark实现销量统计

    package com.mengyao.examples.spark.core; import java.io.Serializable; import org.apache.hadoop.io.Nu ...

  8. [Leetcode Week14]Maximum Binary Tree

    Maximum Binary Tree 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/maximum-binary-tree/description/ ...

  9. C#通过反射获取类中的方法和参数个数,反射调用方法带参数

    using System; using System.Reflection; namespace ConsoleApp2 { class Program { static void Main(stri ...

  10. centos7 安装 NVIDIA Docker

    安装环境: 1.centos7.3 2.NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] 安装nvidia-docker a.安装docker 可参考ce ...