解:

神奇的一批......参观yyb巨神的博客。

大致思路就是第一步枚举gcd,发现后面有个限制是gcd=1,用反演,得到的F(x)是两个等差数列求积。

然后发现有个地方我们除法的除数是乘积,于是换元枚举那个乘积。提到最前面。

稍微化一下,发现后面有个Id * miu,这个东西化成phi。

然后得到一个式子,前半部分是s2(n/i)这个整除分块,后面就要相应的求这个东西i2phi[i]的前缀和来迎合整除分块。

然后就是杜教筛,先设个g,把h(n)写出来发现要消掉一个d2,于是g(x) = x2

没了。

 1 #include <cstdio>
 2 #include <map>
 3
 4 typedef long long LL;
 5 const int N = 5000010, T = 5000008;
 6
 7 LL MO;
 8
 9 inline LL qpow(LL a, LL b) {
10     LL ans = 1;
11     while(b) {
12         if(b & 1) ans = ans * a % MO;
13         a = a * a % MO;
14         b = b >> 1;
15     }
16     return ans;
17 }
18
19 std::map<LL, LL> mp;
20 int p[N], top, phi[N];
21 LL F[N], inv2, inv6;
22 bool vis[N];
23
24 inline void getp(int n) {
25     phi[1] = 1;
26     for(int i = 2; i <= n; i++) {
27         if(!vis[i]) {
28             p[++top] = i;
29             phi[i] = i - 1;
30         }
31         for(int j = 1; j <= top && i * p[j] <= n; j++) {
32             vis[i * p[j]] = 1;
33             if(i % p[j] == 0) {
34                 phi[i * p[j]] = phi[i] * p[j];
35                 break;
36             }
37             phi[i * p[j]] = phi[i] * (p[j] - 1);
38         }
39     }
40     for(int i = 1; i <= n; i++) {
41        F[i] = (F[i - 1] + (1ll * i * i % MO * phi[i] % MO)) % MO;
42     }
43     return;
44 }
45
46 inline LL s2(LL x) { /// sum[1~n] ^ 2
47     x %= MO;
48     LL temp = (x + 1) * x / 2 % MO;
49     return temp * temp % MO;
50 }
51
52 inline LL H(LL x) { /// sum of n^3
53     return s2(x);
54 }
55
56 inline LL G(LL x) { /// sum of n^2
57     x %= MO;
58     return (x << 1 | 1) % MO * (x + 1) % MO * x % MO * inv6 % MO;
59 }
60
61 LL getF(LL x) {
62     if(x <= 0) return 0;
63     if(x <= T) return F[x];
64     if(mp.count(x)) return mp[x];
65     LL ans = H(x);
66     for(LL i = 2, j; i <= x; i = j + 1) {
67         j = x / (x / i);
68         ans -= (G(j) - G(i - 1) + MO) % MO * getF(x / i) % MO;
69         ans = (ans % MO + MO) % MO;
70     }
71     return mp[x] = ans;
72 }
73
74 int main() {
75     LL n;
76     scanf("%lld%lld", &MO, &n);
77     getp(T);
78     inv6 = qpow(6, MO - 2);
79     inv2 = (MO + 1) / 2;
80
81     LL ans = 0;
82     for(LL i = 1, j; i <= n; i = j + 1) {
83         j = n / (n / i);
84         ans += s2(n / i) * (getF(j) - getF(i - 1) + MO) % MO;
85         ans = (ans % MO + MO) % MO;
86     }
87     printf("%lld\n", ans);
88     return 0;
89 }

AC代码

转载于:https://www.cnblogs.com/huyufeifei/p/10443628.html

洛谷P3768 简单的数学题相关推荐

  1. (每日一题)P3768 简单的数学题(确信)(莫反 + 欧拉反演 + 杜教筛 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.20 莫反 和上午的那道题比较类似的 ...

  2. P3768 简单的数学题(杜教筛)

    P3768 简单的数学题 推式子 ∑i=1n∑j=1mijgcd(i,j)=∑d=1nd∑i=1n∑j=1mij(gcd(i,j)=d)=∑d=1nd3∑i=1nd∑j=1ndij∑k∣gcd(i,j ...

  3. 洛谷试炼场-简单数学问题-二分查找

    洛谷试炼场-简单数学问题 P1147 连续自然数和 题解: 本题给定一个数n,求连续自然数的和为n,用一个前缀数组,low_bound,upper_bound,查找是否是同一个数.O(nlog(n)) ...

  4. P3768 简单的数学题 [狄利克雷卷积,杜教筛,莫比乌斯反演]

    简单的数学题 题目连接 https://www.luogu.org/problemnew/show/P3768 题目描述 输入一个正整数n,n≤1010n,n\le 10^{10}n,n≤1010和p ...

  5. 洛谷P3791:普通数学题(整除分块、前缀和)

    解析 似乎位运算和易或并没有太多性质上的联系- 所以换个角度分析 考虑按照二进制进行类似数位dp 暴力枚举 i 和 j 的前k,p位与n.m相同,下一位比n.m小. 然后后面的东西就可以随便填 每个异 ...

  6. 4.11每日一题之亲戚(洛谷c++)|简单并查集

  7. 洛谷P7577 简单模拟题

    题目描述 给定一个长度为 nn 的序列 ss. qq 次询问,每个询问形如 a b c d e f,需要你求出下面式子的值: \sum_{L=a}^{b}[e\le G(F(L,c),F(L,c+1) ...

  8. 广度优先搜索——好奇怪的游戏(洛谷 P1747)

    题目选自洛谷P1747 简单的广搜模板题,4+8 = 12个方向进行bfs,目的地是(1,1) 每次查看队首是否到达,若到达(1,1) 则返回队首步长即可~ 需要注意的是,马走日和像走田的位置计算 i ...

  9. 模拟——玩具谜题(洛谷 P1563)

    模拟算法指的是让程序完整地按照题目叙述的方式运行得到答案! 此题选自洛谷P1563 简单的模拟,类似约瑟夫问题的部分,采用取余的方式. 需要注意的是朝向问题,用一个结构体来保存每个人的朝向即可. 题目 ...

  10. 记忆优化搜索(简单题)(洛谷P3183 [HAOI2016]食物链 )( P5635 【CSGRound1】天下第一 )

    昨天做了蓝桥杯的时候,发现自己对于记忆优化搜索甚是不熟悉,所以今天随便找了几个基础题做做,顺便写下两片题解,顺便用了一下devc++敲的代码,发现没有代码补全真的可以说是灰常难受了... 洛谷P318 ...

最新文章

  1. java finally块_Java中的finally块是什么?
  2. 2 - 前端基础--CSS 选择器
  3. 0212互联网新闻 | 华为将发布5G折叠屏手机;谷歌在小范围内推出AR实景导航
  4. 莫烦python简历_强化学习传说:第一章 模仿学习
  5. live555 源码分析:MediaSever
  6. 感知机模型的对偶形式[转载]
  7. 外设驱动库开发笔记1:AD56xx系列DAC驱动
  8. eclipse启动web项目时,spring会初始化两次
  9. flask 加载配置文件
  10. 将Markdown嵌入到我们的HTML页面中
  11. 阿里架构师用3点讲透数据中台,这些都是你没看过的
  12. Java对象转换Map(工具类)
  13. vue实现登录注册模板
  14. 一杯清茶!细品人生!
  15. 网络可以做什么副业?网上有哪些赚钱的副业?
  16. 分布式任务调度系统-定时任务的解决方案
  17. 视频去水印,图集去水印工具分享
  18. AWD平台搭建与使用入门
  19. jQuery的ajax钩子函数:ajaxStart()、ajaxSend()、ajaxSuccess()、 ajaxError()、ajaxComplete()、ajaxStop()
  20. 书单推荐|书籍是人类的良师益友

热门文章

  1. 洛谷 P1181数列分段SectionI 【贪心】
  2. FZU 2092 收集水晶 BFS记忆化搜索
  3. c++ protected 访问限定
  4. tomcat 多实例的Sys V风格脚本
  5. CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析
  6. 从解放劳动力来看未来的科技进程
  7. vue+django2.0.2-rest-framework 生鲜项目(五)
  8. PHP error_log 新认知
  9. Python模块——xml
  10. (转)C++的tie()函数