zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    7.JavaScript-Promise的并行和串行
    6.Javascript如何处理循环的异步操作
    5.Javascript闭包得实现原理和作用
    4.Javascript中实现继承的几种方法及其优缺点
    3.Javascript实现instanceof
    BEF
    ant-vue Table组件selectedRows翻页后不保留上一页已选
    js 构造函数、继承
    Vue全局注册组件
    react迷惑的点(一)
  • 原文地址:https://www.cnblogs.com/jhz033/p/5570310.html
Copyright © 2011-2022 走看看