洛谷P4640 王之财宝 [BJWC2008] 数论】的更多相关文章

正解:容斥+Lucas+组合数学 解题报告: 传送门! 和上一篇题解的题差不多,,,双倍经验趴大概算 还是说下还是有点儿区别的来着$QwQ$ 两个小差别分别港下$QwQ$ 首先有$m-n$件是无穷个的,,,$so$在ans的求值的时候本来是$\binom{n-1}{n+s-1}$来着,显然就要变成$\binom{m-1}{m+s-1}$ 啊对了说下,因为这题代码我是直接由上题的代码魔改来的,,,$so$命名和题目不太一样,,,我这儿的按读入顺序排是,$m,n,s,mod$ 然后还一个是说只用选不…
题目描述 Koishi十分喜欢数论. 她的朋友Flandre为了检测她和数论是不是真爱,给了她一个问题. 已知 给定和个数,求对取模. 按照套路,呆萌的Koishi当然假装不会做了,于是她来向你请教这个问题,希望你能在秒内给她答案. 输入输出格式 输入格式: 第一行包含两个整数和,接下来一行个整数表示. 输出格式: 一个整数,表示答案 输入输出样例 输入样例#1: 3 5 1 2 4 5 0 输出样例#1: 44044 说明 表示若干个数的最小公倍数 对于10%的数据: 对于另外20%的数据:…
正解:dp+数论 解题报告: 传送门! 考虑对每种颜色的棋子单独考虑鸭,那显然有,当某一行或某一列已经被占据的时候,那一行/一列就不能再放别的颜色的棋子了,相当于直接把那一行/一列直接消了 显然就能考虑到dp?设f[i][j]:剩余i行j列的方案数 转移就枚举这个颜色的棋子放了p行q列,设g[d][p][q]:d个棋子恰好放了p行q列的方案数 直接枚举pq,f[i][j]=∑f[i+p][j+1]*g[c[k]][p][q] 现在就只要知道怎么求g就好 看到这种恰好balabala的应该就第一反…
正解:数论+dp 解题报告: 传送门! 首先看到这题,跳无数次,自然而然可以想到之前考过好几次了的一个结论——如果只考虑无限放置i,它可以且仅可以跳到gcd(p,v[i]) 举一反三一下,如果有多个i,表示成a[i]好了,那就一定是能跳到gcd(p,v[a[1]],v[a[2]],..,v[a[n]]),因为这个太长了后面单一个gcd就指的它 挺显然的这儿不证明了QAQ 然后这儿就相当于是问有多少种a[i]的方案能满足gcd|gcd(p,w) 然后因为多组询问,显然考虑能不能预处理一个f[i]:…
看懂了题解,太妙了TT但是想解释的话可能要很多数学公式打起来太麻烦了TT所以我就先只放代码具体推演的过程我先写在纸上然后拍下来做成图片放上来算辣quq 好的那我先滚去做题了做完这题就把题解放上来.因为这种数论题目重点就在于推结论的过程所以我想着就过个一两天再来推如果还是能思路很清晰地推出来就说明确实掌握了quq…
正解:数论$dp$ 解题报告: 传送门$QwQ$ 考虑先质因数分解.所以$G$就相当于所有系数取$min$,$L$就相当于所有系数取$max$ 这时候考虑,因为数据范围是$1e8$,$1e8$内最多有8个不同质因子,所以考虑状压记录每个质因子的系数是否取到了上界&下界. 状压$dp$就完事了. $dbq$写得有点简陋,仔细港下趴$kk$ 首先经过前面一番操作,题目已经变成了,给定一些集合,求或起来为全集的方案数$QwQ$ 考虑这个强制选$x$怎么搞鸭,先设$st$表示$x$的状态,$tot$表示…
正解:莫比乌斯反演 解题报告: 传送门! 首先这题刚看到就很,莫比乌斯反演嘛,和我前面写了题解的那个一模一样的,所以这儿就不讲这前边的做法辣QAQ 但是这样儿还有个问题,就现在已知我每次都是要O(n)地做的,然后他还有Q个问题,这样复杂度显然就假了,就要想办法优化QAQ 这时候考虑到我们已经搞出来要求的式子长这样儿:∑μ(i)*⌊m/i,n/i⌋,这就很,整除分块昂! 所以预处理μ的时候顺便搞下前缀和,整除分块就能过去辣! #include<bits/stdc++.h> using names…
参考:题解 令f(i)=k%i,[p]表示不大于p的最大整数f(i)=k%i=k-[k/i]*i令q=[k/i]f(i)=k-qi如果k/(i+1)=k/i=qf(i+1)=k-q(i+1)=k-qi-q=f(i)-q于是,对于区间[l,r],使其之内任意两个整数i,j,都满足k/i=k/j,则f(l)到f(r)是一个递减的等差数列,公差为[k/i].现在就是要把1到n分成这样的一些区间,设某个区间的商(公差)为p设区间内某数为x,则现在要做的是解方程[k/x]=p显然px<=k,因此x<=k…
题目:https://www.luogu.org/problemnew/show/P1372 题意: 在1~n之中找k个数,使得他们的最大公因数最大. 思路: 假设ans是答案,说明选择的k个数分别是ans, 2ans, 3ans,...,kans 如果kans<n,那么这k个数肯定是可以取到的. 要找到最大的ans,就只用找到小于且最接近n/ans的整数 #include<cstdio> #include<cstdlib> #include<map> #incl…
[数论]卢卡斯定理模板 洛谷P3807 >>>>题目 [题目] https://www.luogu.org/problemnew/show/P3807 [输入格式] 第一行一个整数T(T\le 10T≤10),表示数据组数 第二行开始共T行,每行三个数n m p,意义如上 [输出格式] 共T行,每行一个整数表示答案. [输入样例] 21 2 52 1 5 [输出样例] 33 >>>>分析 emmmm模板题还是不用分析了吧 卢卡斯定理解决的就是组合数C(n,m…