diff options
Diffstat (limited to 'codechef/strch.c')
-rw-r--r-- | codechef/strch.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/codechef/strch.c b/codechef/strch.c new file mode 100644 index 0000000..518378e --- /dev/null +++ b/codechef/strch.c @@ -0,0 +1,30 @@ +#include <stdio.h> +#include <stdlib.h> + +int main() +{ + int t; + long n, i, j; + long long res; + char *s = malloc(1000001), x; + + scanf("%d", &t); + while (t--) { + scanf("%ld", &n); + fgets(s, n, stdin); + res = n * (n + 1) / 2; + scanf("%s %c", s, &x); + + for (i = 0; i < n; ++i) { + if (s[i] == x) + continue; + for (j = i; j < n && s[j] - x; ++j); + res -= (j - i) * (j - i + 1) / 2; + i = j; + } + + printf("%lld\n", res); + } + + return 0; +} |