首页 > 代码库 > 简易数论练习

简易数论练习

A:略

B: 数论筛 + 最大独立集(二分图)

C:注意用 prime 数组来筛取因子 prime[i]*(LL)prime[i]<=tmp

D:考虑 sigma(n) = \prod(1+p+p^2+....) 等于奇数的情况

对于质因子2,出现任意次皆可,对于其他因子,必然出现偶数次。

这样不考虑质因子2,除去2后的 number 开根后必然与一个1~10^6 的数字相对应,这样枚举p2^t2....pm^tm进行搜索

然后算 2^t * now <= n 解的个数即可。

E:对于后x位,取余快速幂,对于前x位取log10后得到的小数部分,即为所求。

F:略

G:分块

H:考虑[a,b] = n 相当于对于 n中的每一个质因数的指数a,b取max得到的都是n的相应指数。

问题转化为假定集合A:为当前质因数集合  a取到max  ans = \sum prod_{x ∈ A}{ ti } prod_{x ? A}{ti + 1} 

这样考虑线性递推即可得到ans = \prod ti (ti+1)

I:调和级数近似式:1+1/2+1/3+1/4+...1/n = ln(n+1) + r  (r =0.5772156649)  n>10^5 误差小于1e-5

J:注意负数,要在gcd上除去所有的2因子

K:直接求 a mod b

L:和式拆分即可。

M:略

N:相当于求 n! 中一个因子的个数 [n/p^i] 求和即可

O:莫比乌斯反演+分块

 

简易数论练习