摘要: 这题的主要就是找循环节数,这里用找字符串最小覆盖来实现,也就是n-next[n],证明在这http://blog.csdn.net/fjsd155/article/details/6866991#include#include#include#include#include#include#includeusing namespace std;__int64 mod=100000007;int dis[360005],data[360005],next[360005];__int64 euler(__int64 n){ int i; __int64 ans=1; for(i=... 阅读全文
posted @ 2013-07-21 15:28 _随心所欲_ 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 首先,记50的为0,100的为1.当m=4,n=3时,其中的非法序列有0110010;从不合法的1后面开始,0->1,1->0,得到序列式0111101也就是说,非法序列变为了n-1个0,m+1个1.总的数目=C(m+n,n),非法的=C(m+n,m+1)符合数目=(C(m+n,n)-C(m+n,m+1))*m!*n!;化简得:(m+n)!*(m+1-n)/(m+1).Java代码: 1 import java.io.*; 2 import java.math.*; 3 import java.math.BigInteger; 4 import java.lang.String.* 阅读全文
posted @ 2013-07-21 11:18 _随心所欲_ 阅读(163) 评论(0) 推荐(0) 编辑