CF412E E-mail Addresses

题目描述

R1 公司最重要的产品之一是广受欢迎的 @r1.com 邮件服务。R1 邮箱每天都会接收和发送数百万封邮件。 今天,网上爆出一个可怕的消息。R1 的数据库崩溃了,几乎没有什么数据能被保存下来,只有一个很长的字符串。开发人员推测这个字符串包含了一些 R1 邮箱用户的信件。恢复信件是一项繁琐且主要依靠人工的工作。因此,在开始这项工作之前,决定先估算一下恢复的难度。具体来说,我们需要计算一下该字符串中可组成合法邮箱地址的不同子串数量。 我们认为只有满足以下条件的邮箱地址才是合法的: - 地址应以一个非空的字母、数字或字符“\_”序列开头,该序列的第一个字符必须是字母; - 然后必须是字符“@”; - 接下来必须是一个非空的字母或数字序列; - 再接下来必须是字符“.”; - 地址的结尾必须是一个非空的字母序列。 你又一次被幸运地指定来完成这个任务!请注意,子串是字符串中若干连续的字符。两个子串,如果分别由字符串第 $l_{1},l_{1}+1,l_{1}+2,\ldots,r_{1}$ 和 $l_{2},l_{2}+1,l_{2}+2,\ldots,r_{2}$ 个字符组成,且 $l_{1} \neq l_{2}$ 或 $r_{1} \neq r_{2}$,则认为它们是不同的子串。

输入格式

输入包含一行,由字符序列 $s_1 s_2 \ldots s_n$ 组成 $(1 \leq n \leq 10^6)$ —— 即保存下来的字符串。保证该字符串仅包含小写英文字母、数字、以及字符“.”、“\_”、“@”。

输出格式

输出一行,表示子串中合法邮箱地址的个数。

说明/提示

在第一个测试样例中,所有合法的邮箱地址子串都从单词 agapov 的某个字母开始,到单词 com 的某个字母结束。 在第二个测试样例中,邮箱 [email protected] 在答案中被计数了两次。注意,在本例中邮箱地址可以在字符串内部重叠。 由 ChatGPT 5 翻译