我正在编写一个编程问题,其中一个示例输出是64197148392731290。我对该问题的代码是正确的,因为它为我提供了其他测试用例的正确答案(这些测试用例的输出是单个数字)。
据我所知,测试用例的迭代次数太多,输出为64197148392731290。那么我该怎样做才能得到正确的答案。
以下是代码:
#include<stdio.h>
#include<string.h>
int main() {
int test_case;long long int i, j, count, n, k, k1;
scanf("%d", &test_case);
while(test_case--) {
scanf("%lld%lld", &n, &k);
char a[n];
count=0;
k1=k;
scanf("%s", a);
while(k1--) {
strcat(a,a);
}
for(i=0;i<(n*k);i++) {
if(a[i]=='a') {
for(j=(i+1);j<(n*k);j++) {
if(a[j]=='b') {
count++;
}
}
}
}
printf("%lld\n", count);
}
return 0;
}
示例输入和输出:
输入:
3
4 2
abcb
7 1
aayzbaa
12 80123123
abzbabzbazab
输出:
6
2
64197148392731290
我的任务是计算新字符串中子序列“ab”(不一定是连续的)的数量。输入的第一行包含一个整数T,表示测试用例的数量。 T测试用例的描述如下。
每个测试用例的第一行包含两个整数N和K,分别表示初始字符串S的长度和重复次数。
第二行包含一个字符串S.它的长度恰好是N,每个字符都是一个小写的英文字母。
答案 0 :(得分:1)