这题没说n的范围。不过根据推测应该是不会很大,否则肯定会TLE
不过这样它仍是一道好题,题的好坏跟难易度没有太大的关系。关键是想法很重要
这题巧妙在将字符串看做一个nc进制的数,很显然,如果两个数在nc进制下不同,在十进制下也是不同的 然后根据这个转成10进制来搞就行了
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <cstdio>
#include <cmath>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include <stack>
#define eps 1e-5
#define MAXN 20000006
#define MAXM 110037
#define INF 1000000000
using namespace std;
int mod = 20000003;
char s[MAXN];
bool vis[MAXN];
int asc[300];
int main()
{
int n, nc;
scanf("%d%d", &n, &nc);
scanf("%s", s);
int ans = 0, x = 0;
int len = strlen(s);
for(int i = 0; i < len; i++) asc[s[i]] = 1;
for(int i = 0; i < 256; i++)
if(asc[i]) asc[i] = x++;
for(int i = 0; i < len - n + 1; i++)
{
int f = 0;
for(int j = 0; j < n; j++)
f = f * nc + asc[s[i + j]];
if(!vis[f]) ans++, vis[f] = 1;
}
printf("%d\n", ans);
return 0;
}
分享到:
相关推荐
北京大学在线测评网站POJ第1200题的解答,已经AC通过
北大POJ1016-Numbers That Count【字符串处理】 解题报告+AC代码
POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类
上面可能有poj的题目,hdu的题目,spoj的题目,sgu的题目,hust上的题目,fzu上的题目
poj1000-1200大部分资源代码,适于初学者,有C++或JAVA源码
poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...
LeetCode判断字符串是否循环 :bookmark_tabs:Plan 动态规划 背包问题 动态规划 POJ 3267 POJ 1260 POJ 1015 POJ 3176 POJ 1080 POJ 1159 POJ 2533 POJ 1836 Leetcode 70 Leetcode 309 搜索 DFS POJ 2488 POJ 3083 ...
在进行ACM编程训练时做字符串专题的一些题目(POJ1782,POJ1790,POJ1951,POJ2003,POJ2121)
POJ第1861题源码 POJ第1861题源码 POJ第1861题源码
poj分类poj分类poj分类poj分类
北大POJ1159-Palindrome 解题报告+AC代码
poj 3414解题报告poj 3414解题报告poj 3414解题报告poj 3414解题报告
poj 1012解题报告poj 1012解题报告poj 1012解题报告poj 1012解题报告
poj 2329解题报告poj 2329解题报告poj 2329解题报告poj 2329解题报告
poj 1659解题报告poj 1659解题报告poj 1659解题报告poj 1659解题报告
C语言 poj npu 西工大 C语言Poj答案全完整打包,给有需要的朋友
POJ1503解答 POJ1503解答,正确答案(已通过POJ)
poj 百练 题目分类 poj 百练 题目分类
POJ1083的代码,POJ1083的代码,POJ1083的代码
POJ1048,加强版的约瑟夫问题 难度中等