题目连接:
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; }
