HDU 2197 本源串】的更多相关文章

如果一个串能完全由其子串组成,那么这个串就不是本源串 求长度为n的本源串的个数. 由定义一个串如果不是本源串,那么他的长度一定是组成其子本源串的长度的(>=1) 整数倍. 那么长度为n的串总个数是2^n个 枚举n 的因子 长度为n的 本源串的个数就是2^n - a[k1]-a[k2]-..(k1 k2..是n的非n因子). 因为n可以非常的大,所以需要快速幂,不能直接打表,求因子的复杂度是根号n 所以在线算,查,记忆化一下还是很快的. #include <stdio.h> #includ…
http://acm.hdu.edu.cn/showproblem.php?pid=2197 长度为n的01串有2的n次方个,再减去不符合要求的.不符合要求的字符串就是长度为n的约数的字符串. 递归处理,然后用map映射记录求出的每一个数的值,为以后再次输入处理过的数,就可以直接输出,不用递归处理. #include <cstdio> #include <cstring> #include <map> #define ll long long #include <…
由0和1组成的串中,不能表示为由几个相同的较小的串连接成的串,称为本原串,有多少个长为n(n<=100000000)的本原串? 答案mod2008. 例如,100100不是本原串,因为他是由两个100组成,而1101是本原串. Input 输入包括多个数据,每个数据一行,包括一个整数n,代表串的长度. Output 对于每个测试数据,输出一行,代表有多少个符合要求本原串,答案mod2008. Sample Input 1 2 3 4 Sample Output 2 2 6 12 解析: 考虑所有…
Problem Description由0和1组成的串中,不能表示为由几个相同的较小的串连接成的串,称为本原串,有多少个长为n(n<=100000000)的本原串?答案mod2008.例如,100100不是本原串,因为他是由两个100组成,而1101是本原串. Input输入包括多个数据,每个数据一行,包括一个整数n,代表串的长度. Output对于每个测试数据,输出一行,代表有多少个符合要求本原串,答案mod2008. Sample Input1234 Sample Output22612 长…
本原串 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1091    Accepted Submission(s): 350 Problem Description 由0和1组成的串中,不能表示为由几个相同的较小的串连接成的串,称为本原串,有多少个长为n(n<=100000000)的本原串?答案mod2008.例如,100100不是本原…
本原串 题目链接 思路: 反向想将总的个数减去不符合要求的个数.我们枚举n的约数,然后把n平均分,就可以构成不符合要求的串,\(g[i]\)表示循环节长为i约数的个数\(2^i\),我们要求循环节为\(i\)的\(f[i]\),那么可以想到莫比乌斯,但在这里莫比乌斯不好些范围有些大,所以我们用dp的方式去重\(f[i] -= g[i] - f[j](j| i)\)复杂度为\(m*log(m)\) (\(m\)为\(n\)的约数个数). 代码 #include<bits/stdc++.h> us…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4545 这题太坑了,小明的串可以任意删掉某个字符 这句话不知道大家是怎么理解的,我觉得应该是能够删除其中的一种字符,但是个数不限. AC:直接模拟,相同或是能够转换得到就往后继续,不能就删除小明的,然后在判断. 坑死了.......祭恋 #include <cstdio> #include <cstring> #include <iostream> using namespa…
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=2203 题目: 亲和串 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14720    Accepted Submission(s): 6505 Problem Description   人随着岁数的增长是越大越聪明还是越大越笨,这是一个值…
亲和串 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7298    Accepted Submission(s): 3324 Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现,现在长大…
把T串扩展成两倍   然后KMP  注意T的长度要大于P的长度 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; char P[400005]; char T[400005]; int f[400005]; void getfail() { int m=strlen(P); f[0]=0;f[1]=0; for(…