CF677C.Vanya and Label

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

While walking down the street Vanya saw a label "Hide&Seek". Because he is a programmer, he used & as a bitwise AND for these two words represented as a integers in base 64 and got new word. Now Vanya thinks of some string s and wants to know the number of pairs of words of length |s| (length of s), such that their bitwise AND is equal to s. As this number can be large, output it modulo 109 + 7.

To represent the string as a number in numeral system with base 64 Vanya uses the following rules:

  • digits from '0' to '9' correspond to integers from 0 to 9;
  • letters from 'A' to 'Z' correspond to integers from 10 to 35;
  • letters from 'a' to 'z' correspond to integers from 36 to 61;
  • letter '-' correspond to integer 62;
  • letter '_' correspond to integer 63.

瓦尼亚走在街上时,看到一个标签“Hide&Seek”。由于他是一名程序员,于是将这两个单词视作以 64 进制表示的整数,并对其执行按位与(&)运算,从而得到一个新的单词。现在瓦尼亚想到某个字符串 $ s $,并希望知道:有多少对长度为 ∣s∣|s|(即 $ s $ 的长度)的单词,其按位与结果恰好等于 $ s $?由于该数目可能很大,请输出其对 109+710^9 + 7 取模的结果。

为将字符串表示为以 64 为底的进制数,瓦尼亚采用如下规则:

  • 字符 '0' 到 '9' 分别对应整数 00 到 99;
  • 字符 'A' 到 'Z' 分别对应整数 1010 到 3535;
  • 字符 'a' 到 'z' 分别对应整数 3636 到 6161;
  • 字符 '-' 对应整数 6262;
  • 字符 '_' 对应整数 6363。

输入格式

The only line of the input contains a single word s (1 ≤ |s| ≤ 100 000), consisting of digits, lowercase and uppercase English letters, characters '-' and '_'.

输入仅包含一行,其中有一个单词 ss(1 ≤ ∣s∣ ≤ 100 0001 \le |s| \le 100\,000),由数字、小写和大写英文字母、字符 - 和 _ 组成。

输出格式

Print a single integer — the number of possible pairs of words, such that their bitwise AND is equal to string s modulo 109 + 7.

输出一个整数——满足其按位与运算结果等于字符串 s 的单词对的数量,结果对 109+710^9 + 7 取模。

输入输出样例

  • 输入#1

    z

    输出#1

    3
  • 输入#2

    V_V

    输出#2

    9
  • 输入#3

    Codeforces

    输出#3

    130653412

说明/提示

For a detailed definition of bitwise AND we recommend to take a look in the corresponding article in Wikipedia.

In the first sample, there are 3 possible solutions:

  1. z&_ = 61&63 = 61 = z
  2. _&z = 63&61 = 61 = z
  3. z&z = 61&61 = 61 = z

关于按位与(bitwise AND)的详细定义,我们建议参考维基百科中的相应文章。

在第一个样例中,存在 3 种可能的解:

  1. z&_ = 61&63 = 61 = z
  2. _&z = 63&61 = 61 = z
  3. z&z = 61&61 = 61 = z

输入解题思路,AI测评打分。不知道怎么写?

首页