分数转小数,循环小数的循环节要放在括号内方法是模拟触发操作,然后记录下余数,每次生成的余数检查以前是否出现过,出现过说明出现了循环节,则找到循环节开始的地方。这题一点都不好写,我反正是打了好多补丁的感觉。/*ID: modengd1PROG: fracdecLANG: C++*/#include #...
分类:
其他好文 时间:
2015-09-08 21:54:58
阅读次数:
128
题意:
给出一个长度为N的字符串,有Q次询问;
每次询问给出一个区间,求区间最短循环节长度;
N
题解:
这题数据范围简直丧病= =渣电脑3s真的能跑出来吗。。。
不过这题在BZ上是可做的,50s我的程序10s出解了;
首先这问题画一画发现它绝对不是什么数据结构能维护的,因为这东西毫无可并性;
硬说的话多个相同的的连在一起的循环节可以合并变长,然并卵;
所以如果考...
分类:
其他好文 时间:
2015-09-07 09:40:02
阅读次数:
281
题意:求最少需要在后面补几个字符能凑成两个循环。分析:最小循环节的应用,i-next[i]为最小循环节。#include #include #include #include #include #include #include #include #include #include #include...
分类:
其他好文 时间:
2015-09-03 23:20:22
阅读次数:
180
1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 int arr[10000]; 8 9 int main()10 {11 int a,b,n,s,e;12 while(scanf("%d%d%d...
分类:
其他好文 时间:
2015-09-02 10:38:13
阅读次数:
123
题意:
Given n (1 <= n <= 1018), You should solve for
g(g(g(n))) mod 109 + 7
where
g(n) = 3g(n - 1) + g(n - 2)
g(1) = 1
g(0) = 0
分析:
这个递推关系可以用矩阵快速幂来解决...
分类:
其他好文 时间:
2015-08-31 23:49:08
阅读次数:
207
题目链接:点击打开链接
题意描述:给定一个字符串,可以把字符串的后x位移到字符串前面组成一个新的字符串?问对于所有的新组成的字符串中去掉重复的之后,比原串小的个数,等于的个数,大于的个数?
解题思路:扩展KMP(next1[i]数组含义:x[i···len-1]与x[0···len-1]的最长公共前缀)
分析:首先我们把字符串s复制一遍接到原字符串后面形成ss,这样在ss中以i(i>=0&&...
分类:
其他好文 时间:
2015-08-31 19:42:10
阅读次数:
117
题目链接:点击打开链接
题意描述:给定一个字符串,求使这个字符串是循环字符串至少需要添加多少个字符?要求循环至少两次
解题思路:kmp(next[]数组性质:点击打开链接)
根据next[]数组的性质我们可以得到一个字符串最小循环节为n-next[n],所以我们可以得出结论
if((n%(n-next[n])==0)&&(n/(n-next[n])>1))
printf("0...
分类:
其他好文 时间:
2015-08-31 13:42:42
阅读次数:
200
1.题目描述:点击打开链接
2.解题思路:本题利用KMP算法中失配函数的性质解决。我们仔细观察失配函数f就会发现,如果一个字符串P是一个周期串,且它的最后一个位置是i,那么i-f[i]一定是该周期串的一个最小的循环节的长度,这样,最大的k值就是i/(i-f[i])。这样,我们只需要寻找f[i]>0(因为k>0,因此不能让i-f[i]==i)且i%(i-f[i])==0的位置即可。
3.代码:...
分类:
其他好文 时间:
2015-08-28 02:12:30
阅读次数:
135
题意:给一个字符串,求它的最小子串,使得原串是通过它重复得到的字符串的一个子串。思路:先求最小长度,最小循环长度可以利用kmp的next数组快速得到,求出长度后然后利用字符串最小表示法求循环节的最小表示即可。#pragma comment(linker, "/STACK:10240000")#inc...
分类:
其他好文 时间:
2015-08-27 02:11:21
阅读次数:
173
大意:给出一个字符串 问它最多由多少相同的字串组成如 abababab由4个ab组成分析:kmp中的next数组求最小循环节的应用例如ababab next[6] = 4; 即ababab ababab1~4位 与2~6位是相同的那么前两位就等于3、4位3、4位就等于5、6位……所以 如果 能整除 ...
分类:
编程语言 时间:
2015-08-26 21:45:24
阅读次数:
141