题解-MtOI2019 幽灵乐团】的更多相关文章

题面 MtOI2019 幽灵乐团 给定 \(p\),\(Cnt\) 组测试数据,每次给 \(a,b,c\),求 \[\prod_{i=1}^a\prod_{j=1}^b\prod_{k=1}^c\left(\frac{{\rm lcm}(i,j)}{\gcd(i,k)}\right)^{f(t)}\bmod p \] \(t\in\{0,1,2\}\),\(f(0)=1,f(1)=ijk,f(2)=\gcd(i,j,k)\). 数据范围:\(1\le a,b,c\le 10^5\),\(10^7…
P3704 [SDOI2017]数字表格 首先根据题意写出答案的表达式 \[\large\prod_{i=1}^n\prod_{j=1}^mf_{\gcd(i,j)} \] 按常规套路改为枚举 \(d=\gcd(i,j)\) (不妨设 \(n\le m\) ) \[\large\prod_{d=1}^n{f_d}^{\sum_{i=1}^n\sum_{j=1}^m~[(i,j)=d]} \] 指数上的式子很熟悉了,单独拿出来推一下 \[\begin{aligned} \sum_{i=1}^n\s…
瞎扯 建议在阅读题解之前欣赏这首由普莉兹姆利巴姐妹带来的的合奏. Q:你参加省选吗?不是说好了考完 NOIP 就退吗. A:对啊. Q:那你学这玩意干啥? A:对啊,我学这玩意干啥? 写这题的动机? 一是一直很喜欢的曲子,感觉快退役了,圆个梦. 二是写了很多题解了,之前认为最优秀的是 NOI嘉年华的题解,但被叉掉之后不知道该怎么改了,于是删了.其他的都太不精致,都不满意.想在退役之前留下一篇最优秀的题解,于是瞅准了这题. 再有,就是想争口气吧. 最后扯一句,题面里将露娜萨(Lunasa)误写成了…
题目 一个很暴力的辣鸡做法 考虑到两个数的\(\gcd\)是所有质数次幂取\(\min\),两个数的\(\rm lcm\)是所有质数次幂取\(\max\),于是最后的答案一定是\(\prod p_i^{c_i}\),而且这里最大的质数不会超过\(n\),于是我们考虑算出每一个质数的次幂是多少 于是我们成功的将\(\prod\)转换成了\(\sum\),指数上得对\(\rm mod-1\)取模 对于\(\rm type=0\),我们枚举一个质数\(p\),计算它的次幂 即为 \[\sum_{i=0…
洛谷题面传送门 一道究极恶心的毒瘤六合一题,式子推了我满满两面 A4 纸-- 首先我们可以将式子拆成: \[ans=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^C(\dfrac{ij}{\gcd(i,j)\gcd(i,j)})^{f(type)} \] 也就是说我们需要算出以下四项式子的值: \[\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^Ci^{f…
目录 写在前面 A 未来宇宙 B 空海澄澈 C 旧约酒馆 算法一 算法二 D 博物之志 算法一 算法二 算法三 写在前面 比赛地址:THP3 考前信心赛. 感谢原出题人的贡献:第一题 CF1422C,第四题 CF1422D. 所有题目背景均出自 <秘封俱乐部>系列专辑附带故事,感谢太田顺也先生的创造. 感谢 Kersen.xwmwr.Ypay.Rainycolor_Mahou 的鼎力相助. 超级亲民的一场,大片部分分,没有任何高级算法技巧,有一车大样例. A 未来宇宙 给定一长度为 \(n\)…
不学莫反,不学狄卷,就不能叫学过数论 事实上大概也不是没学过吧,其实上赛季头一个月我就在学这东西,然鹅当时感觉没学透,连杜教筛复杂度都不会证明,所以现在只好重新来学一遍了(/wq 真·实现了水平的负增长((( 1. \(\mu\) 与 \(\varphi\) 真就从头开始呗 对于整数 \(n=p_1^{\alpha_1}\times p_2^{\alpha_2}\times\cdots\times p_k^{\alpha_k}\),定义莫比乌斯函数 \(\mu(n)\) 为: \[\mu(n)=…
题面 题面说的乱糟糟的看起来似乎是个可持久化线性基: 然而~ 一个式子搞定一切: a^b<=a+b 那么把所有数异或起来便是答案: #include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; ; ;i<=n;i++){ int tmp; scanf("%d",&tmp); ans^=tmp; } cout<<ans; }…
题目传送门 一道模拟题目,签到送分题. 您需要的知识 1.while循环 2.for循环 3.一维数组 思路: Step 1:按题目要求,定义a[],n,m,k int a[10001]; int n,m,k; Step 2:输入n,m,k cin>>n>>m>>k; Step 3:对于 \(60\%\) 的数据,\(k=0\). 所以先来个判断就能得到60分 如果k==0就输出n/m向上取整 小学三年级的知识-- if(k==0) { if(n%m==0)cout&l…
[MtOI2019]黑蚊子多: 送分向水题,直接模拟即可. #include<iostream> #include<cstdio> #define N 1505 using namespace std; int n,m,k,a[N],now,ans,hve[N]; int main() { cin>>n>>m>>k; ;i<=k;i++)cin>>a[i],hve[a[i]]=; while(now<n) { ans++;…