codeforces 355(Div 2)C. Vanya and Label(思维,预处理)
来源:互联网 发布:水利计价软件 编辑:程序博客网 时间:2024/05/16 17:57
题目链接:
http://codeforces.com/problemset/problem/677/C
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 base64 and got new word. Now Vanya thinks of some strings and wants to know the number of pairs of words of length|s| (length of s), such that their bitwise AND is equal tos. As this number can be large, output it modulo109 + 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 from0 to 9;
- letters from 'A' to 'Z' correspond to integers from10 to 35;
- letters from 'a' to 'z' correspond to integers from36 to 61;
- letter '-' correspond to integer 62;
- letter '_' correspond to integer 63.
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 '_'.
Print a single integer — the number of possible pairs of words, such that their bitwise AND is equal to strings modulo 109 + 7.
z
3
V_V
9
Codeforces
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:
- z&_ = 61&63 = 61 = z
- _&z = 63&61 = 61 = z
- z&z = 61&61 = 61 = z
题意:给定一种特定的64进制如下:
- digits from '0' to '9' correspond to integers from0 to 9;
- letters from 'A' to 'Z' correspond to integers from10 to 35;
- letters from 'a' to 'z' correspond to integers from36 to 61;
- letter '-' correspond to integer 62;
- letter '_' correspond to integer 63.
解题思路:
其实目的很明确,就是求出每个字符对应的数,可以由多少对字符所对应的数按位与得到 ,再将每个字符的可能结果乘起来就可以得出整个字符串的可能结果。
我是利用了map的性质,把字符作为map数组的下标去处理,感觉直观很多。
代码如下:
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<set>#include<cmath>#include<vector>#include<map>using namespace std;const int maxn = 1e+5 + 10;char str[maxn];typedef long long ll;char ss[]= {"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_"};map<char,int>ma;const int mod = 1e+9 + 7;int main(){ ma.clear(); scanf("%s",str); for(int i = 0; ss[i]; i++) { for(int j = 0; ss[j]; j++) ma[ss[i&j]]++; } ll ans = 1; for(int i = 0 ; str[i] ; i ++) {// cout << ma[str[i]] <<endl; ans = ans*ma[str[i]]%mod; } cout << ans <<endl; return 0 ;}
- codeforces 355(Div 2)C. Vanya and Label(思维,预处理)
- Codeforces Round #355 (Div. 2)C - Vanya and Label
- Codeforces Round #355 (Div. 2)C. Vanya and Label
- Codeforces Round #355 (Div. 2)C. Vanya and Label
- Codeforces Round #355 (Div. 2) C. Vanya and Label
- Codeforces 677C Vanya and Label【思维】
- ★【16.6.2】Codeforces Round #355 (Div. 2) C. Vanya and Label
- Codeforces Round #355 (Div. 2) C. Vanya and Label (打表+字符串)
- Codeforces Round #355 (Div. 2) C Vanya and Label 快速幂取模
- codeforces 677c Vanya and Label
- Codeforces 677 C Vanya and Label
- Codeforces 677C Vanya and Label(二进制)
- codeforces 677C Vanya and Label
- CodeForces-Vanya and Label
- CodeForces 552C-Vanya and Scales【思维】
- codeforces 552C Vanya and Scales 【思维】
- Codefoces 677C Vanya and Label (预处理/翻译)
- Codeforces Round #280 (Div. 2) C. Vanya and Exams
- View工作原理(一)事件传递原理详解
- Java转型(向上或向下转型)
- C++第七次作业
- 虚拟机ping通主机,主机ping不通虚拟机的解决办法
- python中input和raw_input区别
- codeforces 355(Div 2)C. Vanya and Label(思维,预处理)
- 前缀和or线段树____计数少女(2016swust信息院赛)
- JSTL标签
- Permissions and permission groups.
- Android中常用颜色的收藏
- spark 优化
- 54. Spiral Matrix 【M】【82】
- 在iOS中使用第三方类库
- [c语言编程]排序法汇总-入门级别(2)