2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱
今天的比赛没打(
睡午觉去了,今天太累了
晚上来看看题
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 一群小青蛙呱蹦呱蹦呱相关推荐
- 2021牛客寒假算法基础集训营6 J.天空之城
J.天空之城 题目链接:https://ac.nowcoder.com/acm/contest/9986/J 题目描述: 天空之城有5个小镇,名字分别为Ada, Aed, Akk, Orz, Apq, ...
- 【解题报告】2021牛客寒假算法基础集训营4
[解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...
- 2021牛客寒假算法基础集训营1
2021牛客寒假算法基础集训营1 A. 串(线性DP) B. 括号(构造) E.三棱锥之刻(几何) F. 对答案一时爽(签到) I. 限制不互素对的排列(构造) J. 一群小青蛙呱蹦呱蹦呱 A. 串( ...
- 2021牛客寒假算法基础集训营2 D.牛牛与整除分块
2021牛客寒假算法基础集训营2 D.牛牛与整除分块 题目链接 题目描述 整除分块,又称数论分块.是数论算法中的重要技巧,你可以在各种需要枚举因子的连续求和类问题中见到它的身影.如杜教筛,莫比乌斯反演 ...
- 2021牛客寒假算法基础集训营5 B.比武招亲(上)
2021牛客寒假算法基础集训营5 B.比武招亲(上) 题目链接 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐在榜上留下了这样一道问题,谁做出来了就可以 ...
- 2021牛客寒假算法基础集训营4
九峰与签到题 链接:https://ac.nowcoder.com/acm/contest/9984/A 来源:牛客网 题目描述 九峰正在准备一场毒瘤比赛,他是如此毒瘤以致于他想方设法降低通过率,他认 ...
- 2021牛客寒假算法基础集训营5 比武招亲(上)(组合数)
链接:https://ac.nowcoder.com/acm/contest/9985/B 来源:牛客网 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐 ...
- 2021牛客寒假算法基础集训营3,签到题DGHIJ
D. Happy New Year!模拟 #include<bits/stdc++.h> using namespace std; int main(){ios::sync_with_st ...
- 2021牛客寒假算法基础集训营1 题解
A.串 题解: dp 三维dp可能更好理解一些. dp[i][j][k]dp[i][j][k]dp[i][j][k]代表长度为iii的字符串,当j=1时代表已经含有u了的字符串的个数,k=1时代表已经 ...
最新文章
- 安利Mastodon:属于未来的社交网络
- MyBatis-Plus为啥这么牛?
- zigbee 串口不稳定_基于项目的ZigBee系统组网介绍
- JDK自带的实用工具native2ascii.exe
- 生成对象---工厂方法模式
- iphone11系统输入框的光标位置不正常
- CVPR 2019审稿排名第一满分论文:让机器人也能「问路」的视觉语言导航新方法...
- diamond operator is not supported in -source 1.5和source release 8 requires target release 1.8的问题
- location 和 history
- Android有效解决加载大图片内存溢出问题及优化虚拟机内存
- 虚拟机安装Windows7系统(亲测超详细)
- web sql indexedDB
- 有效扩展:来自预训练和微调变换器的见解、rct.ai训练出5亿参数的BERT-X模型
- python弧度制转换 三角函数 反三角函数 双曲 反双曲 sin cos tan asin acos atan asinh acosh atanh atanh2
- C++中的%、++、--、运算符
- (JAVA练习)输入一个四位数,各个位的数字相加
- MySQL基础系列之 视图详解
- ADI Blackfin DSP处理器-BF533的开发详解67:PCM的播放(含源码)
- pdf转换器1.0注册码
- 80老翁谈人生(222):谈信访工作法制化
热门文章
- 一文读懂 RoIPooling、RoIAlign 和 RoIWarp
- 无人驾驶 | 为什么双目自动驾驶系统难以普及?
- watchOS 5 新特性:继续发力运动与健身
- Angular:Promise.all()的具体应用
- php通过http请求发送数组
- linux 配置软连接的需要注意的一个问题
- 第九天:基础文件管理
- css页面重构面试题
- a_2可以用作python标识符嘛,【单选题】下列选项中,可作为Python标识符的是哪项?
A. getpath()
B. throw
C. my#var
D. _ My_price...
- qtp9.2测试java_QTP的使用举例说明