A Colossal Fibonacci Numbers! (循环节)
题意:求fibonacci数列f(a^b)项mod n (0<a,b<$2^64$,$1<=n<=1000$)
题解:
我见过的fibonacci数列的常见处理方式:
递推;
矩阵快速幂:$$\begin{pmatrix} f(n) & f(n-1) \\ 0 & 0 \\ \end{pmatrix} * \begin{pmatrix} 1 & 1 \\ 1 & 0 \\ \end{pmatrix} = \begin{pmatrix} f(n)+f(n-1) & f(n) \\ 0 & 0 \\ \end{pmatrix} $$(这个东西老是忘记) ,定义一个矩阵类,再用快速幂运算,O(2^3*logn),ll内肯定是可以处理的,更高的连指数都要高精了;
循环节:递推公式f(n)=f(n-1)+f(n-2),所以如果有二元组(f(i),f(i-1))重复出现的话就有循环节,而在mod n 的意义下最多有n^2个不同的二元组,那么直接枚举判断就好了;
B Choose and divide (double精度处理)
题意:求$\frac{C_p^q}{C_r^s}$的值保留5位小数(p,q,r,s<=10000)
并且答案不超过1e8;
题解:根据经验double一般可以保留到1e3左右的组合数;
但是题目要求1e4,可以用$C_n^m = \Pi_{i=1}^m \frac{n-i+1}{m-i+1}$这个形式一边乘一边除;
或者考虑对结果唯一分解,将1-1e4以内的质数全部找出来,利用$C_n^m = \frac{n!}{m!(n-m)!}$,这样除法就变成了对应指数的减法,看公式只需要统计N!的唯一分解就好;
推荐:勒让德定理:
$ L_p(n!) = \sum_{k\ge 1} [\frac{n}{p^k}] $(表示n!的唯一分解里面质因子p出现的次数)
C GCD XOR (数学推导)
D Irrelevant Elements (唯一分解定理)
E Send a Table (欧拉函数)
F Password (编码问题)
G Headshot (简单概率)
H Cows and Cars (条件概率)
I Probability|Given (条件概率)
J Double Patience (概率+状压dp,不要dfs)
K Critical Mass (容斥或dp或递推)
L Pole Arrangement (方案dp)
M Crossing Rivers (期望)
N Coupons (期望dp-》递推公式)
O Probability (积分)
P So you want to be a 2n-aire? (期望最优也是一种概率)
Q Polygon (概率小游戏)
R The Counting Problem (数位dp)
S How Many Pieces of Land ? (递推,求和+高精度)
T ASCII Area (计算几何)
U Joseph's Problem (下底分块)
V Help Tomisu (n!欧拉函数递推)
W trees in a Wood. (mobius/欧拉函数+枚举)
X Highways (枚举本质不同的线)
Y Magical GCD (gcd迭代的性质+链表)
Z Race (递推)