整理的算法模板合集: ACM模板

点我看算法全家桶系列!!!

实际上是一个全新的精炼模板整合计划


一周连考三门,人都没了

Weblink

2021年天梯赛 L3-3 可怜的简单题

CF1139D

Problem

Solution

数据较大,要用快速乘不然会爆 long long

Code

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 21544400 + 7;#define minus(x, y) (1ll * x - y < 0 ? 1ll * x - y + mod : 1ll * x - y)
#define plus(x, y) (1ll * x + y >= mod ? 1ll * x + y - mod : 1ll * x + y) ll mod;
int mu[N];
ll smu[N];
bool vis[N];
unordered_map <ll, ll> sum_mu;
int primes[N], cnt;
ll n, m; ll mul(ll a, ll b) {if (mod <= 1000000000) return a * b % mod;else if (mod <= 1000000000000ll) return (((a * (b >> 20) % mod) << 20) + (a * (b & ((1 << 20) - 1)))) % mod;else {ll d = (ll)floor(a * (long double)b / mod + 0.5);ll res = (a * b - d * mod) % mod;if (res < 0) res += mod;return res;}
}ll qpow(ll a, ll b)
{if(mod == 1) return 0;ll res = 1;a = a % mod;while(b) {if(b & 1) res = mul(res, a);a = mul(a, a);b >>= 1;}return res;
}ll inv(ll x)
{return qpow(x, mod - 2);
}void init(int n)
{mu[1] = 1, vis[1] = 1;for(int i = 2; i <= n; ++ i) {if(vis[i] == 0) {primes[ ++ cnt] = i;mu[i] = -1;}for(int j = 1; j <= cnt && i * primes[j] <= n; ++ j) {vis[i * primes[j]] = 1;if(i % primes[j] == 0) {mu[i * primes[j]] = 0;break;}  mu[i * primes[j]] -= mu[i];}}  for(int i = 1; i <= n; ++ i) smu[i] = plus(smu[i - 1], mu[i]);return ;
}inline ll g_sum(ll x)
{return x;
}inline ll get_sum_mu(ll x)
{if(x <= N - 7) return smu[x];if(sum_mu.find(x) != sum_mu.end()) return sum_mu[x]; ll ans = 1;for(ll l = 2, r; l <= x; l = r + 1) {r = x / (x / l); ll tmp = mul((r - l + 1), get_sum_mu(x / l));ans = minus(ans, tmp);}ans = (ans % mod + mod) % mod;sum_mu[x] = ans / g_sum(1ll);return ans / g_sum(1ll);
}void solve(ll m)
{ll ans = 1;for(ll l = 1, r; l <= m; l = r + 1) {r = m / (m / l); ll tmp = mul((get_sum_mu(r) - get_sum_mu(l - 1)), mul(m / l, inv(m - m / l)));ans = minus(ans, tmp);}  ans = (ans + mod) % mod;printf("%lld\n", ans);return ;
}signed main()
{ scanf("%lld%lld", &m, &mod);if(m == 1) return printf("1\n"), 0;init(N - 7);solve(m);return 0;
}

(每日一题)CF1139D Steps to One 2021年天梯赛 L3-3 可怜的简单题(期望,莫比乌斯反演,杜教筛)相关推荐

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

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

  2. 2021年国赛高教杯数学建模A题FAST主动反射面的形状调节解题全过程文档及程序

    2021年国赛高教杯数学建模 A题 FAST主动反射面的形状调节 原题再现   中国天眼--500 米口径球面射电望远镜(Five-hundred-meter Aperture Spherical r ...

  3. 2021年国赛高教杯数学建模B题乙醇偶合制备C4烯烃解题全过程文档及程序

    2021年国赛高教杯数学建模 B题 乙醇偶合制备C4烯烃 原题再现   C4 烯烃广泛应用于化工产品及医药的生产,乙醇是生产制备 C4 烯烃的原料.在制备过程中,催化剂组合(即:Co 负载量.Co/S ...

  4. 2021年国赛高教杯数学建模D题连铸切割的在线优化解题全过程文档及程序

    2021年国赛高教杯数学建模 D题 连铸切割的在线优化 原题再现   连铸是将钢水变成钢坯的生产过程,具体流程如下(图 1):   钢水连续地从中间包浇入结晶器,并按一定的速度从结晶器向下拉出,进入二 ...

  5. 2021/4/24团队设计天梯赛L3题目集及部分题解

    2021/4/24团队设计天梯赛L3题目集及部分题解: 以下题解都是通过PTA测试的,大致保证正确性: 查看题目戳此::PTA题目集 L3题目集 L3-01 森森旅游 (30 分) L3-02 还原文 ...

  6. Luogu P6055 [RC-02] GCD(莫比乌斯反演,杜教筛)(这题乐死我了,真就图一乐呗)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P6055 Prob ...

  7. A. [2021.1.29多校省选模拟11]最大公约数(杜教筛/数论)

    A. [2021.1.29多校省选模拟11]最大公约数 这是一个杜教筛的经典题目,最后我们只需要筛一下1∗xμ(x)1*x\mu(x)1∗xμ(x)这个函数的前缀和即可,然后看到有111这个函数,我们 ...

  8. 计算机天梯赛pat练习集L1-(31~88题)

    文章目录: 31.到底是不是太胖了 32.Left-pad 33.出生年 34.点赞 35.情人节 36.A乘以B 37.A除以B 38.新世界 39.古风排版 40.最佳情侣身高差 41.寻找250 ...

  9. 2021 CCCC天梯赛补题

    前言不想看请直接跳过---- 前言+检讨:天梯赛我拉垮了,我拖了队伍后腿,我有罪. 分析原因,首先是前一个星期训练量不够,没有跟上队友训练的进度,一些基础的STL的用法使用的也不熟练. 第二,没有把S ...

最新文章

  1. 数据采集提升性能篇-使用Mybatis的批量操作api导入数据
  2. 找到MVC框架中前端URL与后端同步的解决方案
  3. 赋值给集合_当面试官问集合遍历的删除方法时,要警惕这里有个异常陷阱
  4. hdu 1312深搜入门题
  5. idea设置提示重复代码下去掉波浪线
  6. [FW]修复ubutnu12.04+win7的grub2引导
  7. [转] 基于 Apache Mahout 构建社会化推荐引擎
  8. 中配置kylin_Kylin集群模式部署(使用同一HBase存储)
  9. torch运行错误libcudnn Unsupported HDF5 version: 1.10.2错误
  10. insmod: can‘t insert ‘xx.ko‘: File exists 问题解决
  11. 保姆级PS教程:建筑表现后期中的照明处理
  12. 思科警告:旗下某些产品可能存在无法修补的WannaCrypt漏洞
  13. python 控制手机摄像头_用Python获取摄像头并实时控制人脸 !
  14. 2设置使用 Yocto 项目
  15. 51nod 2075 图书管理员
  16. JavaScript循环对象拿到键和值
  17. windows下如何配置AWS进行深度学习
  18. 山东办理高新技术企业可以享受的税收优惠
  19. 现在假定初始在第一站的时候公车上有k个人,以后每经过一站车上的人先下去一半ki/2(ki除2的整数部分),然后再上ki人,现在已知公车的限乘人数L,假定公车如果不能再上人就(即ki-ki/2+ki
  20. 去哪网实习总结:已完毕,但是网页上有错误(JavaWeb)

热门文章

  1. 【Python基础】使用统计函数绘制简单图形
  2. 4个计算机视觉领域用作迁移学习的模型
  3. 【项目实践】车距+车辆+车道线+行人检测项目实践
  4. 如何使用OpenCV自动校正文本图像
  5. 【OpenCV 4开发详解】图像连接
  6. 包含Tomcat 9的JBoss Web Server 5已发布
  7. JDK, JRE和JVM的区别与联系
  8. java 闭包与回调
  9. response的contentType 常见几种类型
  10. 优秀开发者和差的开发者之间区别