摘要: 很明显的Polya计数法,但是有一个纠结的地方就是这个k rotation不是给定的,而是然自己求出来的。因为数据比较大,暴力找的话肯定TLE,开始没想到怎么做。后来看到有人说用kmp,好吧,我又水 了。。。。。做法: 定义数组vv[],vv[] = v[] + v[], 就是把两个v[]数组接起来作为匹配串,原串v[]作为模式串。O(n)跑一遍kmp,看在哪些位置正好匹配。然后polya计数就行。#include <iostream>#include <cstdio>#include <cmath>#include <vector>#inclu 阅读全文
posted @ 2013-06-04 16:51 AC_Von 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 欧拉定理(又称费马-欧拉定理):已知a和n为正整数,并且a和p互素,则a^phi(n) ≡1(mod n)。证明: 设集合Z = {X1, X2, X3, .... , Xphi(n)},其中Xi (i = 1, 2, .. phi(n))表示第i个不大于n与n互质的数。 考虑集合S = {a*X1(mod n), a*X2(mod n), ... ,a*Xphi(n) (mod n) },则集合Z = S; 1) 因为a和n互质,Xi和n也互质,所以a*Xi 也与n互质。所以对任意一个Xi,a*Xi (mod n)一定是Z里面的元素; 2)对于任意Xi, Xj, 如果Xi != Xj... 阅读全文
posted @ 2013-06-04 16:42 AC_Von 阅读(2370) 评论(0) 推荐(0) 编辑