源代码: #include<cstdio> #include<cstring> int L1,L2; long long Ans(0); char A[300001],B[201]; int main() //可啪的模拟,居然爆零了。 { gets(A+1); gets(B+1); L1=strlen(A+1); L2=strlen(B+1); int Last(0); //断点。 for (int a=1;a<=L1;a++) { int Sum=1,b; if (A[a]==B[1]) { for (b=a;b<=L1;b++) { if (Sum==L2+1) break; if (A[b]==B[Sum]) Sum++; } if (Sum==L2+1) //合法。 { b--; Ans+=(a-Last)*(L1-b+1); Last=a; } } } printf("%I64d",Ans); return 0; }