C Obtain the String
题意:s的 substring 几轮能够组成 t
一开始暴力写的,然后就超了。
要用kmp来写
解:nxt数组
nxtij 表示 从i以后第一个字母j出现的位置
D same GCDs
题意:a<m. 0<=x<=m
问有多少个x使 gcd(a,m)==gcd(a+x, m)
解: if a≥b then gcd(a,b)=gcd(a−b,b)
gcd(a+x, m)==g;
gcd(a+x/g, m/g)==1;
(a+x)/g可以看作t, 所以问题转化成有多少个t使得 gcd(t , m/g)==1;
就能用欧拉函数打表求出。