数论
Alstein
十年oi一场空,不开longlong见祖宗
展开
-
CF1139D step to one(数论+概率dp)
原题地址 题意:给一个数m和一个空数组a,每次可以选1~m中任意一个数加入到a中,求最后a数组中所有数的gcd为1时的期望长度; 令dp[i] 表示当前数组的gcd为i时,还期望添加dp[i]个数使得所有数的gcd为1;那么初始条件dp[1] = 0; 状态转移公式: 解释一下,1表示添一个数;求和表示从1~m中选一个数加入数组,期望是dp[gcd(i,j)],选到的概率是1/m。直接做复杂度O(m^2),过不了,所以要优化,观察这个式子,gcd(i,j)肯定会出现重复项,比如,当i=4时,j=6和j=8都原创 2020-06-12 22:19:51 · 197 阅读 · 0 评论 -
容斥原理求解1~r中和某个数m互质的数的个数
百度百科有一道例题就是用容斥原理计算这个的,如果不明白的可以先看看那个。 我们首先要利用容斥原理求得和m不互质的数,为此我们先找出m的素因子 void get_fac(ll m) //要找的m的素因子 { for(ll i=2;i*i<=m;i++) { if(m%i==0) { fac[cnt++]=i; //...原创 2019-10-18 11:42:16 · 405 阅读 · 0 评论 -
hdu5667Sequence(矩阵快速幂+数学化解)
这道以我也是服了,折腾了一天。对我这样的新手菜鸡而言,这道题拿到就先试了一下暴力(初生牛犊不怕虎T_T),T了之后就没想到办法了,然后看了一下搜了一下思路,矩阵快速幂!!!我居然把这档子事儿给忘了,递推式,数据爆炸,太符合应用场景了,于是就开始着手往这方走,但是怎么也化不出相加 形式,上网弄了好久才明白,我还是觉得很多博客太跳了,一开始的式子我就不知道哪儿来的。不过最后还是找到了一位大佬的,然后弄...原创 2019-07-21 10:18:30 · 148 阅读 · 0 评论