Description

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

  

Input

第一行两个数n,m。

Output

  一个整数表示答案mod 19940417的值

Sample Input

3 4

Sample Output

1

样例说明
  答案为(3 mod 1)*(4 mod 2)+(3 mod 1) * (4 mod 3)+(3 mod
1) * (4 mod 4) + (3 mod 2) * (4 mod 1) + (3 mod 2) * (4 mod 3) + (3 mod 2) * (4
mod 4) + (3 mod 3) * (4 mod 1) + (3 mod 3) * (4 mod 2) + (3 mod 3) * (4 mod 4)
= 1

数据规模和约定
  对于100%的数据n,m<=10^9。

由题意:

∑∑((n mod i) * (m
mod j)) ( i≠j)= ∑(n mod i) * ∑(m mod i) - ∑((n mod i) * (m mod i))=
∑(n-[n/i]*i) * ∑(m-[m/i]*i) - ∑(nm-([n/i]+[m/i])i+[n/i][m/i]*i*i)= ∑(n-[n/i]*i)
* ∑(m-[m/i]*i) – n*n*m+∑[n/i]i+∑[m/i]i-∑[n/i][m/i]*i*i(n <= m)

然后利用[n/i]的分组加速运算即可,不过中间过程有多处需要注意的,

m/(m/i)的时候需要和n比较大小,因为可能会超出范围。

此外就是int乘法可能会爆,需要转long long,中间过程别忘了MOD

 

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <string>
#define LL long long
#define MOD 19940417
#define nsix 3323403 using namespace std; int n, m; LL cal(int len, int x)
{
LL ans = , tmp;
int j;
for (int i = ; i <= len; ++i)
{
j = min(len, x/(x/i));//这一句不用min,j会越界
tmp = ((LL)i+j)*(j-i+)/%MOD;
ans += tmp*(x/i)%MOD;
ans %= MOD;
i = j;
}
return ans;
} inline LL sum(LL x)
{
return x*(x+)%MOD*(*x+)%MOD*nsix%MOD;
} LL cal2(int x, int y)
{
LL ans = , tmp, ttmp;
int j;
for (int i = ; i <= x; ++i)
{
j = min(x/(x/i), y/(y/i));
//j = min(j, x);
tmp = sum(j)-sum(i-);
tmp = (tmp%MOD+MOD)%MOD;
ttmp = ((LL)x/i)*(y/i)%MOD;
ans += tmp*ttmp%MOD;
ans %= MOD;
i = j;
}
return ans;
} void work()
{
if (n > m) swap(n, m);
LL ans, m2, n2, snn, smm, snm, ss;
m2 = (LL)m*m%MOD;
n2 = (LL)n*n%MOD;
smm = cal(m, m);
snn = cal(n, n);
snm = cal(n, m);
ss = cal2(n, m);
ans = m2*n2%MOD - m2*snn%MOD - n2*smm%MOD + snn*smm%MOD;
ans -= m*n2%MOD;
ans += m*snn%MOD;
ans += n*snm%MOD;
ans -= ss;
ans = (ans%MOD+MOD)%MOD;
printf("%lld\n", ans);
} int main()
{
//freopen("test.in", "r", stdin);
while (scanf("%d%d", &n, &m) != EOF)
work();
return ;
}

ACM学习历程—BZOJ2956 模积和(数论)的更多相关文章

  1. ACM学习历程—HDU5667 Sequence(数论 && 矩阵乘法 && 快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=5667 这题的关键是处理指数,因为最后结果是a^t这种的,主要是如何计算t. 发现t是一个递推式,t(n) = c ...

  2. ACM学习历程—HDU5668 Circle(数论)

    http://acm.hdu.edu.cn/showproblem.php?pid=5668 这题的话,假设每次报x个,那么可以模拟一遍, 假设第i个出局的是a[i],那么从第i-1个出局的人后,重新 ...

  3. ACM学习历程—HDU5666 Segment(数论)

    http://acm.hdu.edu.cn/showproblem.php?pid=5666 这题的关键是q为质数,不妨设线段上点(x0, y0),则x0+y0=q. 那么直线方程则为y = y0/x ...

  4. ACM学习历程—HDU5585 Numbers(数论 || 大数)(BestCoder Round #64 (div.2) 1001)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5585 题目大意就是求大数是否能被2,3,5整除. 我直接上了Java大数,不过可以对末尾来判断2和5, ...

  5. BZOJ2956: 模积和(数论分块)

    题意 题目链接 Sol 啊啊这题好恶心啊,推的时候一堆细节qwq \(a \% i = a - \frac{a}{i} * i\) 把所有的都展开,直接分块.关键是那个\(i \not= j\)的地方 ...

  6. ACM学习历程—HDU5637 Transform(数论 && 最短路)

    题目链接:http://codeforces.com/problemset/problem/590/A 题目大意是给两种操作,然后给你一个s,一个t,求s至少需要多少次操作到t. 考虑到第一种操作是将 ...

  7. ACM学习历程—SNNUOJ1132 余数之和(数论)

    Description F(n) = (n % 1) + (n % 2) + (n % 3) + ...... (n % n).其中%表示Mod,也就是余数.例如F(6) = 6 % 1 + 6 % ...

  8. ACM学习历程—HDU1719 Friend(数论)

    Description Friend number are defined recursively as follows. (1) numbers 1 and 2 are friend number; ...

  9. 【bzoj2956】模积和 数论

    题目描述 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j. 输入 第一行两个数n,m. 输出 一个整数表示答案mod 1994041 ...

随机推荐

  1. 1. lvs+keepalived 高可用群集

    一. keepalived 工具介绍 1.专为lvs 和HA 设计的一款健康检查工具 2.支持故障自动切换 3.支持节点健康状态检查 二.  keepalived 实现原理剖析 keepalived ...

  2. [Catalan数]1086 栈、3112 二叉树计数、3134 Circle

    1086 栈 2003年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 栈是计算机中 ...

  3. EasyDSS流媒体服务器灵活地帮助用户实现摄像机RTSP转RTMP直播功能

    简要描述 今天突然接到国内某上市公司同事打来的技术咨询电话,经过简单的沟通,大概所描述的需求是: 1.目前现场有非常多的摄像机资源需要接入: 2.需要将摄像机的RTSP流转成RTMP流接入到微信小程序 ...

  4. 九度OJ 1262:Sequence Construction puzzles(I)_构造全递增序列 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:118 解决:54 题目描述: 给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列. 输入: 输入的第一行包括一个整数N( ...

  5. 为什么不写 @RequestParam 也能拿到参数?

    三种写法,test(String name), test(@RequestParam String name), test(@RequestParam("userName") St ...

  6. 开发者眼中的Spring与JavaEE

    JavaEE与Spring 在Java社区中,Spring与Java EE之争是个永恒的话题.在这场争论中,来自两个阵营的布道师.架构师 与铁杆粉丝都在不遗余力地捍卫着本方的尊严,并试图说服对方加入到 ...

  7. vue项目创建流程和使用

    vue项目的创建 npm run dev 让项目执行起来 #下载vuex npm install vuex --save#下载axiosnpm install axios --save 当我们生成项目 ...

  8. 特性,批次特性建立的BAPI函數

    [转http://taijizhang.blog.163.com/blog/static/176071381201442225514453/] SAP特性,物料特性,批次特性建立的BAPI函數 类的T ...

  9. IOS int NSInteger NSNumber区分

    1.NSNumber 是一个类继承于NSValue 即一个基本数据类型的集合 包括char a signed or unsigned char, short int, int, long int, l ...

  10. 虚拟机ubuntu14.04系统设置静态ip

    ubuntu14.04 设置静态ip vim /etc/network/interfaces 原来只有 auto lo iface lo inet loopback 修改成如下: auto lo if ...