| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
hhh1A,7788K 313MS#include <stdio.h>
bool has[16000004] = {0};
int val[256];
int v = 0;
int getVal(char c){
if(val[c] == -1) {
val[c] = v;
v++;
}
return val[c];
}
int power(int n, int m){
if(m == 0) return 1;
int t = power(n, m/2);
if(m%2 == 0) return t*t;
return t*t*n;
}
int main() {
int N,M;
for(int i = 0; i < 256; i++) val[i] = -1;
scanf("%d%d\n", &N, &M);
char *buf = new char[N];
int pos = 0;
int ss = 0;
int w = power(M, N-1);
for(int i = 0; i < N; i++){
ss *= M;
scanf("%c", &buf[i]);
//printf("%c\n", buf[i]);
ss += getVal(buf[i]);
}
has[ss] = 1;
int res = 1;
char temp;
while(scanf("%c ", &temp) > 0){
//printf("%c\n", temp);
ss -= w * getVal(buf[pos]);
ss *= M;
ss += getVal(temp);
buf[pos] = temp;
if(!has[ss]){
has[ss] = 1;
res ++;
}
pos += 1;
pos %= N;
}
printf("%d\n", res);
delete [] buf;
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator