调不出,赏 3 关。
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ext {cout<<0;return 0;}
string s;
int a[100001],b[100001],tipa,tipb,tip,cnt1,cnt2,cnt3,x,ans,op=3;
inline bool check(int x,char ch){
if (x>=1&&ch<='z'&&ch>='a') return 1;
if (x>=2&&ch<='9'&&ch>='0') return 1;
if (x>=3&&ch=='_') return 1;
return 0;
}
signed main(){
cin>>s,s+='#';
for (int i=0;i<s.length();i++){
if (s[i]=='@'&&tipa<=tipb) a[++tipa]=i;
else if (s[i]=='.'&&tipa>tipb) b[++tipb]=i;
}
if (tipa>tipb) tipa=tipb;
for (int i=0;i<s.length();i++){
if (i==a[tip+1]) {op=2;continue;}
if (i==b[tip+1]) {op=1;continue;}
if (op==1&&check(op,s[i])) cnt2++;
else if (op==1) ans+=cnt1*cnt2*x,cnt1=cnt3=cnt2=0,x=0,op=3,i=b[++tip];
if (op==3&&check(op,s[i])) {if (s[i]>='a'&&s[i]<='z') cnt1++;}
else if (op==3) cnt1=0;
if (op==2&&!check(op,s[i])) x=0;
else if (op==2) x=1;
}
cout<<ans;
return 0;
}
验证码 nima 祭。