CF677C Vanya and Label

题目描述

在街上散步时,Vanya 看到一个标签是“Hide&Seek”。因为他是一个程序员,他用 $&$ 运算符将这两个词表示为 $64$ 进制下的整数,并进行了按位与运算,得到一个新单词。现在 Vanya 想到了某个字符串 $s$,他想知道有多少对长度为 $|s|$(即 $s$ 的长度)的单词,其按位与的结果等于 $s$。由于结果可能很大,请输出答案对 $10^9+7$ 取模后的结果。 Vanya 采用如下规则将字符串表示为 $64$ 进制下的数字: - 字符 '0' 到 '9' 分别对应 $0$ 到 $9$; - 字母 'A' 到 'Z' 分别对应 $10$ 到 $35$; - 字母 'a' 到 'z' 分别对应 $36$ 到 $61$; - 字符 '-' 对应 $62$; - 字符 '_' 对应 $63$。

输入格式

输入仅一行,包含一个单词 $s$($1 \leq |s| \leq 100000$),只包含数字、大小写字母、字符 '-' 和 '_'。

输出格式

输出一个整数,表示满足条件的单词对的数量,对 $10^9+7$ 取模。

说明/提示

如果不清楚按位与(bitwise AND)的定义,建议查阅维基百科相关页面。 在第一个样例中,有 $3$ 种可能的组合: 1. $z \&\_ = 61\&63 = 61 = z$ 2. $\_ \&z = 63\&61 = 61 = z$ 3. $z \&z = 61\&61 = 61 = z$ 由 ChatGPT 5 翻译