今天的比赛没打(

睡午觉去了,今天太累了

晚上来看看题

2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱

题目传送门


板子题(

我们知道由唯一分解定理得,若

n=p1α1×p2α2×p3α3×⋯×pkαkn=p_1^{α_1}\times p_2^{α_2}\times p_3^{α_3}\times \cdots\times p_k^{α_k}n=p1α1​​×p2α2​​×p3α3​​×⋯×pkαk​​

m=p1β1×p2β2×p3β3×⋯×pkβkm=p_1^{β_1}\times p_2^{β_2}\times p_3^{β_3}\times \cdots\times p_k^{β_k}m=p1β1​​×p2β2​​×p3β3​​×⋯×pkβk​​

n×m=p1α1+β1×p2α2+β2×p3α3+β3×⋯×pkαk+βkn\times m=p_1^{α_1+β_1}\times p_2^{α_2+β_2}\times p_3^{α_3+β_3}\times \cdots\times p_k^{α_k+β_k}n×m=p1α1​+β1​​×p2α2​+β2​​×p3α3​+β3​​×⋯×pkαk​+βk​​

gcd(n,m)=p1min{α1,β1}×p2min{α1,β1}×⋯×pkmin{αk,βk}gcd(n,m)=p_1^{min\{α_1,β_1\}}\times p_2^{min\{α_1,β_1\}}\times \cdots\times p_k^{min\{α_k,β_k\}}gcd(n,m)=p1min{α1​,β1​}​×p2min{α1​,β1​}​×⋯×pkmin{αk​,βk​}​

lcm(n,m)=p1max{α1,β1}×p2max{α1,β1}×⋯×pkmax{αk,βk}lcm(n,m)=p_1^{max\{α_1,β_1\}}\times p_2^{max\{α_1,β_1\}}\times \cdots\times p_k^{max\{α_k,β_k\}}lcm(n,m)=p1max{α1​,β1​}​×p2max{α1​,β1​}​×⋯×pkmax{αk​,βk​}​

首先根据题目我们知道它把所有素数及其幂次全部都筛掉了。

我们知道任何一个数都能被唯一质因子分解掉,所有的素数及其幂次没有了,那么能剩下的都是几个质因子幂次的乘积。求这些数的 lcmlcmlcm 。

例如 6=21×316=2^1\times3^16=21×31。

我们根据上面的 lcmlcmlcm 指数定理可知,剩下的所有的数的 lcmlcmlcm 就是取所有数的质因子分解之后的每个质因子的最大的幂次的乘积。

那么对于一个任意的质数 ppp ,没有被筛掉的数中 ppp 的最大的次幂 kkk 就是 pk×2≤np^k\times2\le npk×2≤n。当然对于 222 而言,最小的质数是它本身,所以需要乘上次小的质数 333 。

那么我们的质数需要筛到多大呢,很明显就是 ⌈n2⌉\lceil \frac{n}{2} \rceil⌈2n​⌉。

看上去很暴力,n≤1.6×108n\le1.6\times10^8n≤1.6×108 ,会不会超时呢?

很明显不会,因为质数很少,n≤1.6×108n\le1.6\times10^8n≤1.6×108 只有 s=4669382s = 4669382s=4669382。

复杂度为 O(max{⌈n2⌉,slogn})=O(⌈n2⌉)=8e7O(max\{\lceil \frac{n}{2} \rceil,slogn\})=O(\lceil \frac{n}{2}\rceil)=8e7O(max{⌈2n​⌉,slogn})=O(⌈2n​⌉)=8e7。

牛客评测机真给力(

最后考虑 empty 的情况,手算可发现当 n<6n <6n<6 时,全是素数,全被筛掉了,直接输出 empty 就好。

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;
const int N = 8e7 + 7, mod = 1e9 + 7;
typedef long long ll;
int qpow(int a, int b)
{int res = 1;while(b) {if(b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}
bool vis[N];
int primes[N], cnt;void get_primes(int n)
{for(int i = 2; i <= n; ++ i) {if(vis[i] == 0) primes[ ++ cnt] = i;for(int j = 1; j <= cnt && i * primes[j] <= n; ++ j) {vis[i * primes[j]] = true;if(i % primes[j] == 0) break;}}
}
int n, m;
ll ans = 1;
int main()
{scanf("%d", &n);if(n <= 5) {puts("empty");return 0;}get_primes(n / 2 + 1);ll p = 2, c = 0, maxx = n / 3;while(maxx >= p) maxx /= p, c ++ ;ans = ans * qpow(p, c) % mod;for(int i = 2; i <= cnt; ++ i) {ll p = primes[i], c = 0, maxx = n / 2;while(maxx >= p) maxx /= p, c ++ ;ans = ans * qpow(p, c) % mod;}printf("%lld\n", ans);return 0;
}

2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱相关推荐

  1. 2021牛客寒假算法基础集训营6 J.天空之城

    J.天空之城 题目链接:https://ac.nowcoder.com/acm/contest/9986/J 题目描述: 天空之城有5个小镇,名字分别为Ada, Aed, Akk, Orz, Apq, ...

  2. 【解题报告】2021牛客寒假算法基础集训营4

    [解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...

  3. 2021牛客寒假算法基础集训营1

    2021牛客寒假算法基础集训营1 A. 串(线性DP) B. 括号(构造) E.三棱锥之刻(几何) F. 对答案一时爽(签到) I. 限制不互素对的排列(构造) J. 一群小青蛙呱蹦呱蹦呱 A. 串( ...

  4. 2021牛客寒假算法基础集训营2 D.牛牛与整除分块

    2021牛客寒假算法基础集训营2 D.牛牛与整除分块 题目链接 题目描述 整除分块,又称数论分块.是数论算法中的重要技巧,你可以在各种需要枚举因子的连续求和类问题中见到它的身影.如杜教筛,莫比乌斯反演 ...

  5. 2021牛客寒假算法基础集训营5 B.比武招亲(上)

    2021牛客寒假算法基础集训营5 B.比武招亲(上) 题目链接 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐在榜上留下了这样一道问题,谁做出来了就可以 ...

  6. 2021牛客寒假算法基础集训营4

    九峰与签到题 链接:https://ac.nowcoder.com/acm/contest/9984/A 来源:牛客网 题目描述 九峰正在准备一场毒瘤比赛,他是如此毒瘤以致于他想方设法降低通过率,他认 ...

  7. 2021牛客寒假算法基础集训营5 比武招亲(上)(组合数)

    链接:https://ac.nowcoder.com/acm/contest/9985/B 来源:牛客网 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐 ...

  8. 2021牛客寒假算法基础集训营3,签到题DGHIJ

    D. Happy New Year!模拟 #include<bits/stdc++.h> using namespace std; int main(){ios::sync_with_st ...

  9. 2021牛客寒假算法基础集训营1 题解

    A.串 题解: dp 三维dp可能更好理解一些. dp[i][j][k]dp[i][j][k]dp[i][j][k]代表长度为iii的字符串,当j=1时代表已经含有u了的字符串的个数,k=1时代表已经 ...

最新文章

  1. 安利Mastodon:属于未来的社交网络
  2. MyBatis-Plus为啥这么牛?
  3. zigbee 串口不稳定_基于项目的ZigBee系统组网介绍
  4. JDK自带的实用工具native2ascii.exe
  5. 生成对象---工厂方法模式
  6. iphone11系统输入框的光标位置不正常
  7. CVPR 2019审稿排名第一满分论文:让机器人也能「问路」的视觉语言导航新方法...
  8. diamond operator is not supported in -source 1.5和source release 8 requires target release 1.8的问题
  9. location 和 history
  10. Android有效解决加载大图片内存溢出问题及优化虚拟机内存
  11. 虚拟机安装Windows7系统(亲测超详细)
  12. web sql indexedDB
  13. 有效扩展:来自预训练和微调变换器的见解、rct.ai训练出5亿参数的BERT-X模型
  14. python弧度制转换 三角函数 反三角函数 双曲 反双曲 sin cos tan asin acos atan asinh acosh atanh atanh2
  15. C++中的%、++、--、运算符
  16. (JAVA练习)输入一个四位数,各个位的数字相加
  17. MySQL基础系列之 视图详解
  18. ADI Blackfin DSP处理器-BF533的开发详解67:PCM的播放(含源码)
  19. pdf转换器1.0注册码
  20. 80老翁谈人生(222):谈信访工作法制化

热门文章

  1. 一文读懂 RoIPooling、RoIAlign 和 RoIWarp
  2. 无人驾驶 | 为什么双目自动驾驶系统难以普及?
  3. watchOS 5 新特性:继续发力运动与健身
  4. Angular:Promise.all()的具体应用
  5. php通过http请求发送数组
  6. linux 配置软连接的需要注意的一个问题
  7. 第九天:基础文件管理
  8. css页面重构面试题
  9. a_2可以用作python标识符嘛,【单选题】下列选项中,可作为Python标识符的是哪项? A. getpath() B. throw C. my#var D. _ My_price...
  10. qtp9.2测试java_QTP的使用举例说明