题目连接:
https://vjudge.net/problem/ZOJ-4060
思路:遍历找到俩个字符串不同的段数,通过观察可以发现,假设段数X
1.X=0 C(n,2)+n
2 X=1 2*(n-1) 自己可以推算一下
3 X=2 6
4 X> =3 0
code :
#include<iostream>
#include<cstdio>
using namespace std;
const int N=1e6+10;
typedef long long ll;
char s[N],t[N];
int main()
{
int T;
ll n;
scanf("%d\n",&T);
while(T--){
scanf("%lld",&n);
scanf("%s",s+1);
scanf("%s",t+1);
int ans=0;
for(int i=1;i<=n;i++){
if(s[i]!=t[i]){
ans++;
while(s[i]!=t[i]){
i++;
}
}
}
if(ans==0) printf("%lld\n",n*(n+1)/2);
else if(ans==1) printf("%lld\n",(n-1 )*2);
else if(ans==2 ) printf("6\n");
else printf("0\n");
}
return 0;
}