一、题目

  P2260 [清华集训2012]模积和

二、分析

  参考文章:click here

  具体的公式推导可以看参考文章。博主的证明很详细。

  自己在写的时候问题不在公式推导,公式还是能够比较顺利的推导出来,但是,码力不够,比如说在乘积的时候,因为输入时候的$n$和$m$没有注意,一直用的$int$类型的,导致中间结果早就爆了,自己却浑然不知。

  还有一个细节就是题目给的模数不是质数,所以求逆元的时候需要使用扩展欧几里得进行求解逆元。  

三、AC代码

 1 #include <bits/stdc++.h>
2
3 using namespace std;
4 #define ll long long
5 #define Min(a,b) ((a)>(b)?(b):(a))
6 #define Max(a,b) ((a)>(b)?(a):(b))
7 const int mod = 19940417;
8 const int inv = 3323403;
9
10 void exgcd(ll a, ll b, ll &x, ll &y)
11 {
12 if(b == 0)
13 {
14 x = 1, y = 0;
15 return ;
16 }
17 else
18 {
19 ll x1, y1;
20 exgcd(b, a % b, x1, y1);
21 x = y1;
22 y = x1 - (a / b) * y1;
23 }
24 }
25
26 ll solve(ll n)
27 {
28 ll ans = (n % mod * n % mod) % mod;
29 ll L = 1, R;
30 for(L; L <= n; L = R + 1)
31 {
32 int k = n / L;
33 if(!k)
34 {
35 R = n;
36 }
37 else
38 {
39 R = n / k;
40 }
41 ans = (ans - (R - L + 1) * (L + R) / 2 % mod * k % mod + mod) % mod;
42 }
43 return ans;
44 }
45
46 ll get(ll n)
47 {
48 return n * (n + 1) % mod * (n<<1|1) % mod * inv % mod;
49 }
50
51 int main()
52 {
53 //exgcd(6, mod, x, y); //x就是6在mod下的逆元
54 ll n, m;
55 cin >> n >> m;
56 ll ans1, ans2, ans3, ans = solve(n) * solve(m) % mod;
57 if(n < m) swap(n, m);
58 ll L, R;
59 for(L = 1; L <= m; L = R + 1)
60 {
61 R = Min(n/(n/L), m/(m/L));
62 ans1 = (n*m % mod *(R - L + 1)) % mod;
63 ans2 = ((n/L) * m % mod + (m/L) * n % mod) % mod * ((R - L + 1) * (L + R) / 2 % mod) % mod;
64 ans3 = ((n/L) * (m/L) % mod * (get(R) - get(L - 1) + mod) % mod )% mod;
65 ans = ((ans - (ans1 + ans3 - ans2) ) % mod + mod) % mod;
66 }
67 printf("%lld\n", ans%mod);
68 return 0;
69 }

P2260 [清华集训2012]模积和 【整除分块】的更多相关文章

  1. P2260 [清华集训2012]模积和

    P2260 [清华集训2012]模积和 整除分块+逆元 详细题解移步P2260题解板块 式子可以拆开分别求解,具体见题解 这里主要讲的是整除分块(数论分块)和mod不为素数时如何求逆元 整除分块:求Σ ...

  2. 洛谷P2260 [清华集训2012]模积和(容斥+数论分块)

    题意 https://www.luogu.com.cn/problem/P2260 思路 具体思路见下图: 注意这个模数不是质数,不能用快速幂来求逆元,要用扩展gcd. 代码 #include< ...

  3. 洛谷 P2260 [清华集训2012]模积和 || bzoj2956

    https://www.lydsy.com/JudgeOnline/problem.php?id=2956 https://www.luogu.org/problemnew/show/P2260 暴力 ...

  4. luoguP2260 [清华集训2012]模积和

    题意 \(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}n\%i*m\%j*[i!=j]\) \(\sum\limits_{i=1}^{n}\sum\limits ...

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

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

  6. BZOJ2956: 模积和——整除分块

    题意 求 $\sum_{i=1}^n \sum_{j=1}^m (n \ mod \ i)*(m \ mod \ j)$($i \neq j$),$n,m \leq 10^9$答案对 $1994041 ...

  7. BSOJ 4062 -- 【清华集训2012】串珠子

    Description 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不 ...

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

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

  9. Luogu P4247 [清华集训2012]序列操作

    题意 给定一个长度为 \(n\) 的序列 \(a\) 和 \(q\) 次操作,每次操作形如以下三种: I a b c,表示将 \([a,b]\) 内的元素加 \(c\). R a b,表示将 \([a ...

随机推荐

  1. CodeForces 1047C Enlarge GCD(数论)题解

    题意:n个数的gcd是k,要你删掉最少的数使得删完后的数组的gcd > k 思路:先求出k,然后每个数除以k.然后找出出现次数最多的质因数即可. 代码: #include<cmath> ...

  2. 翻译:《实用的Python编程》01_03_Numbers

    目录 | 上一节 (1.2 第一个程序) | 下一节 (1.4 字符串) 1.3 数字 本节讨论数学计算. 数字类型 Python 有 4 种类型的数字: 布尔型 整型 浮点型 复数(虚数) 布尔型( ...

  3. 1. mac 手动安装nodejs搭建vue环境

    为什么选择手动安装nodejs呢? 因为使用mac自动安装还要更新homebrew,还要安装xcode tool, 太费劲了,不如手动安装, 卸载起来也方便 再一个, 我是后台开发者, 对前端页面, ...

  4. shit 牛客网

    shit 牛客网 为什么,只可以 log 一次,什么垃圾逻辑呀! https://www.nowcoder.com/test/question/e46437833ddc4c5bb79f7af7a1b7 ...

  5. Chrome offline game & source codes hacker

    Chrome offline game & source codes hacker dino === little dinosaur chrome://dino/ 手动 offline htt ...

  6. bye MVA

    bye MVA https://mva.microsoft.com/

  7. PAUL ADAMS ARCHITECT:华州加州城市楼市竞争力居全美前列

    美国房地产公司最新一份报告显示,美国楼市竞争力最高的十个城市中有八个来自华盛顿州和加利福尼亚州,主要原因在于越来越多的买家考虑迁居房价更划算的都会区.数据显示,斯潘那维65%的房屋以高于要价的价格售出 ...

  8. 16_MySQL聚合函数的使用(重点,建议大家多动手操作)

    本节所涉及的SQL语句 -- 聚合函数 SELECT AVG(sal+IFNULL(comm,0)) AS avg FROM t_emp; -- SUM SELECT SUM(sal) FROM t_ ...

  9. java: 类 RegisterController 是公共的, 应在名为 RegisterController.java 的文

    public声明的类名需要和文件名一致,检查一下

  10. 微信小程序:添加全局的正在加载中图标效果

    在发送请求的时候,显示一个正在加载中的小图标.在加载下一页的时候也显示正在加载中.同时数据请求回来了,把加载中进行关闭. 开发----API-----界面 在哪里添加这两段代码会比较方便呢?一个项目有 ...