摘要: 题意:给你一个数,每次把这个数尾巴上的一个数字放到前面来,问如此循环一遍形成的新的(不重复)数字中,大于,等于,小于原数字的数各有多少个。比如样例:341->134->413->341,小于、等于、大于的各有1个。这个串后面接上它本身,作为主串,原串作为模式串。显然这题就是要求出主串每个后缀与模式串的最长公共前缀,直接套扩展KMP模板即可。因为形成的新的数字必须不重复,因此还需要用KMP的next函数求一下最短循环节。#include #include #include #include using namespace std;const int MAXN = 2001000 阅读全文
posted @ 2013-10-03 17:32 冰鸮 阅读(388) 评论(0) 推荐(0)