【题目链接】 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. [bzoj1005][HNOI2008]明明的烦恼-Prufer编码+高精度

    Brief Description 给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线,可产生多少棵度数满足要求的树? Algorithm Design 结论题. 首先可以参考这篇文章 ...

  2. Java的四种引用——强弱软虚

    1.强引用—用new 当我们用new向堆区申请一片内存空间时,此时就是强引用. 当内存不足,GC(垃圾收集器)不会回收该强引用的对象. 2.软引用—用SofeReference类实现 用来描述一些还有 ...

  3. nodejs 优雅的连接 mysql

    1.mysql 及 promise-mysql nodejs 连接 mysql 有成熟的npm包 mysql ,如果需要promise,建议使用 promise-mysql: npm:https:// ...

  4. SqlServer存储过程中使用事务,示例

    create proc pro_GetProTrans @GoodsId int, @Number int, @StockPrice money, @SupplierId int, @EmpId in ...

  5. 关于级联查询,mybatis

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-// ...

  6. FineReport——登录不到决策系统

    在不断的测试过程中,可能会造成缓存数据的累积,所以在登录过程中可能会出现登录不到决策系统,而是跳转到某一模板页面 解决方法就是清理缓存或者换一个浏览器测试.

  7. Laravel artisan commands

    使用php artisan list 可以看到artisan的所有命令以及选项. 当然你也可以在此基础上扩展自己的命令. 1. key 1.1 key:generate 这是一个加密秘钥,用于保证安全 ...

  8. 3.4Code

    #include<algorithm> #include<iostream> #include<cstdio> #define inf 0x3f3f3f3f #de ...

  9. java中的构造方法与其作用

    什么是构造方法呢? 方法名和类名相同 没有返回值类型,连void都不能写 没有具体的返回值 构造方法分为无参构造方法与有参构造方法. 先来看一下最简单的无参构造方法: Student.java pac ...

  10. 《深入浅出MyBatis技术原理与实战》——7. 插件

    在第6章讨论了四大运行对象的运行过程,在Configuration对象的创建方法里我们看到了MyBatis用责任链去封装它们. 7.1 插件接口 在MyBatis中使用插件,我们必须使用接口Inter ...