• codeforces 355 div2 C. Vanya and Label 水题


    C. Vanya and Label
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    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.
    Input

    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 '_'.

    Output

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

    Examples
    input
    z
    output
    3
    input
    V_V
    output
    9
    input
    Codeforces
    output
    130653412
    思路:打表得到并之后的种数;
    #include<bits/stdc++.h>
    using namespace std;
    #define ll __int64
    #define mod 1000000007
    #define inf 999999999
    #define pi (4*atan(1.0))
    const int N=1e2+10,M=1e5+10;
    ll flag[N];
    ll getnumber(char a)
    {
        if(a=='-')
        return 62;
        if(a=='_')
        return 63;
        if(a>='0'&&a<='9')
        return a-'0';
        if(a>='a'&&a<='z')
        return a-'a'+36;
        if(a>='A'&&a<='Z')
        return a-'A'+10;
    }
    char a[100010];
    int main()
    {
        ll x,y,z,i,t;
        for(i=0;i<=63;i++)
        for(t=0;t<=63;t++)
        {
            ll gg=(i&t);
            if(gg<64)
            flag[gg]++;
        }
        scanf("%s",a);
        x=strlen(a);
        ll ans=1;
        for(i=0;i<x;i++)
        {
            ans*=flag[getnumber(a[i])];
            ans%=mod;
        }
        printf("%I64d
    ",ans);
        return 0;
    }
  • 相关阅读:
    Bamboo CI 使用的一些记录
    fork 与 branch、clone 的区别
    使用--ignore-scripts解决npm/yarn安装依赖失败问题
    gyp ERR! find VS gyp ERR! find VS msvs_version not set from command line or npm config gyp ERR! find
    sdk manager 打不开解决方法
    appium
    北京幼升小
    MySQL中limit的问题
    初始社保费管理客户端的单位编号
    flutter BackdropFilter的毛玻璃效果使用
  • 原文地址:https://www.cnblogs.com/jhz033/p/5570310.html
Copyright © 2020-2023  润新知