一、题目

  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. history-back

    ;!function(pkg, undefined){ //此声明函数在xback.js文件里有,在app.js里必须再声明一次,不然监听返回事件失败 var STATE = 'x-back'; va ...

  2. element-ui select get selected option object

    element-ui select get selected option object value-key="value" === String :value="{va ...

  3. js Nullish Coalescing Operator

    js Nullish Coalescing Operator 空值合并 const n = null ?? 'default string'; console.log(n); // "def ...

  4. JSON-LD 结构化数据

    JSON-LD 结构化数据 SEO JSON-LD JSON for Linking Data JSON 链接数据 https://json-ld.org/ https://en.wikipedia. ...

  5. Next.js Conf 2020

    Next.js Conf 2020 Next.js Conf Ticket https://nextjs.org/conf Conf Schedule https://confs.tech/javas ...

  6. MongoDB Manually config

    MongoDB Manually config macOS 10.15.x path error exception in initAndListen: NonExistentPath: Data d ...

  7. V8 & ECMAScript & ES-Next

    V8 & ECMAScript & ES-Next ES6, ES7, ES8, ES9, ES10, ES11, ES2015, ES2016, ES2017, ES2018, ES ...

  8. modal over table bug

    modal over table bug table can not clickable bad <el-row> <el-col :span="24"> ...

  9. nasm astrspn函数 x86

    xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export ast ...

  10. js & for & for of & for in & forEach, break

    js & for & for of & for in & forEach, break js for break https://stackoverflow.com/q ...