1. 程式人生 > >Codeforces Round #355 (Div. 2) C Vanya and Label 快速冪取模

Codeforces Round #355 (Div. 2) C Vanya and Label 快速冪取模

            先預處理出每個字元可能的組合情況,然後 用map存各個字元出現的字數,最後快速冪一下就好了。。算是codeforces 裡面C題中比較簡單的一道了。。

#include<bits/stdc++.h>
typedef long long ll;
using namespace std; 
int cnt[65];
const int mod = 1e9+7;
char s[100010];
map<int, int>mp;
int change(char ch)
{
	if(ch >= '0' && ch <= '9')
	   return ch-'0';
	if(ch >= 'A' && ch <= 'Z')
	   return ch-'A'+10;
	if(ch >= 'a' && ch <= 'z')
	   return ch-'a'+36;
	if(ch == '-')
	   return 62;
	if(ch == '_')
	   return 63;
}

ll mypow(ll n, ll t)
{
	ll ans = 1;
	while(t)
	{
		if(t%2 == 1)
		   ans = ans*n%mod; 
		n = n*n%mod;
		t >>= 1;
	}
	return ans;
}

int main()
{
	ll ans = 1;
	mp.clear();
	for(int i = 0; i <= 63; i++)
	{
		int num = 0;
		for(int j = 0; j <= 63;  j++)
		{
			for(int k = 0; k <= 63; k++)
			{
				if((j&k) == i)//==運算子的優先順序比較高。。 
				{
					num++;
					//if(i == 61)
				        //printf("j:%d k:%d i:%d\n", j, k, i);
				}
			}
		} 
		cnt[i] = num;
	} 
	scanf("%s", s);
	int len = strlen(s);
	for(int i = 0; i < len; i++)
	    mp[change(s[i])]++;
	for(int i = 0; i <= 64; i++)
	{
		if(mp[i])
		{
			ans = ans*mypow((ll)cnt[i], (ll)mp[i])%mod;
			//printf("i:%d cnt[i]:%d ans:%I64d\n", i, cnt[i], ans);
		}   
	}
	   
    printf("%I64d\n", ans);
    return 0;
} 

相關推薦

Codeforces Round #355 (Div. 2) C Vanya and Label 快速

            先預處理出每個字元可能的組合情況,然後 用map存各個字元出現的字數,最後快速冪一下就好了。。算是codeforces 裡面C題中比較簡單的一道了。。 #include<

Codeforces Round #355 (Div. 2) D. Vanya and Treasure 分治暴力

復雜度 font level -1 exactly tput %d test air D. Vanya and Treasure Vanya is in the palace that can be represented as a grid n?×?m. Each

【動態規劃】 Codeforces Round #416 (Div. 2) C. Vladik and Memorable Trip

and main spa def esp 動態 return 價值 can 劃分那個序列,沒必要完全覆蓋原序列。對於劃分出來的每個序列,對於某個值v,要麽全都在該序列,要麽全都不在該序列。 一個序列的價值是所有不同的值的異或和。整個的價值是所有劃分出來的序列的價值之和。

Codeforces Round #482 (Div. 2) C Kuro and Walking Route

any HA msu OS rom element res size false C. Kuro and Walking Route time limit per test 2 seconds memory limit per test 256 megabytes

Codeforces Round #292 (Div. 2) C. Drazil and Factorial 515C

note prope file ssi CI AC TP 最大值 NPU C. Drazil and Factorial time limit per test 2 seconds memory limit per test 256 megabytes inpu

(又FST在long long!!)Codeforces Round #293 (Div. 2)C. Anya and Smartphone

我的天,又FST在  long long piapiapia 扇死  題意:(我研究了半天才看懂) 第一行輸入應用總數 n ,要一次開啟應用的總數 ,每個螢幕最多的應用數。 第二行按位子(1~n)順序輸入應用的編號; 第三行輸入要依次開啟的應用。 問我們要求需

Codeforces Round #197 (Div. 2): C. Xenia and Weights(記憶化搜尋)

  題意: 先輸入一個長度為10的01串,第i個數字為1表示你有重量為i的砝碼無數個,第i個數字為0表示你沒有重量為i的砝碼,你需要按照以下規則在一個一開始平衡的天平上放上m個砝碼 第1個砝碼放在天平左邊,第2個砝碼放在天平的右邊,第3個砝碼放在天平左邊……依次

Codeforces Round #290 (Div. 2)-C. Fox And Names】 思維題+拓撲排序

Codeforces Round #290 (Div. 2)-C. Fox And Names 題意 給 你

Codeforces Round #524 (Div. 2) C. Masha and two friends 思路

題目:題目連結 思路:直接計數顯然是不好處理的,但分情況討論只要不寫錯這題是一定可以出的,但這樣基本做完這個題就沒時間做其他題了,但當時我就這麼蠢的這樣做了,比賽一個半小時的時候突然發現一個似乎可行的規律,但因為時間問題沒有證,當時那個思路已經快寫完了也沒有換思路寫,就杯具了,最後那個寫了一坨的程式碼耗了我

Codeforces Round #524 (Div. 2) C. Masha and two friends

C. Masha and two friends time limit per test 1 second memory limit per test 256 megabytes input standard input output standard outpu

Codeforces Round #525 (Div. 2) C. Ehab and a 2-operation task(數論構造)

思路來源 http://www.cnblogs.com/Dup4/p/10068891.html 題解 注意%可以起到等同於減的作用。 Solution1: 先給區間[1,n]加上一個較大的數D,比如500W, 這樣ai就變為D+ai, 由於ai-i<1

Codeforces Round #525 (Div. 2)C. Ehab and a 2-operation task

一個數 n-1 i++ 我們 text ++ target sin const C. Ehab and a 2-operation task 題目鏈接:https://codeforc.es/contest/1088/problem/C 題意: 給出n個數,然後最多可

Codeforces Round #525 (Div. 2) C. Ehab and a 2-operation task

題意:   給定一個長度為 n 的陣列a[ ],並且有兩種操作: ①將前 i 個數全都加上 x; ②將前 i 個數全都 mod x 要求用不超過 n+1 次操作,使得陣列 a[ ] 嚴格單調遞增。 思路: 對於每個數a[ i ],實施操作 a[ i ]%( a[ i ]-i

Codeforces Round #525 (Div. 2)C - Ehab and a 2-operation task

  題目   題意:   給你長度為n的陣列a[i],最多操作n+1次,每次都可以將前 i 個數  (操作1)都加上x,或者(操作2)都%x ,(x為1e6以內的任意數,且每次操作可以不同), 使得陣列a嚴格單調遞增(一定後一項大於前一項)。  要你輸出一個總的

Codeforces Round #223 (Div. 2): C. Sereja and Prefixes(二分+遞迴)

題意: 你有一個序列,一開始為空,之後進行m次操作,操作有兩種: 1 x:在當前序列後面新增一個數x 2 x, y:將序列的前x個數複製y遍接序列後面(x<10000) 之後n次

Codeforces Round #356 (Div. 2) C. Bear and Prime 100 (有趣的題目)

C. Bear and Prime 100 time limit per test 1 second memory limit per test 256 megabytes input standard input output standard

Codeforces Round #524 (Div. 2)C. Masha and two friends(容斥定理)

傳送門 題意:先給出一個n行m列的矩陣,這個矩陣是黑白交錯的,左下角是白的,然後再給出一個矩陣,這個矩陣就全部染成白色的,之後再給出一個矩陣,這個矩陣染成黑色的,資料範圍是1e9,問最後白色塊和黑色塊分別由多少? 題解:首先可以算出這個大矩陣的黑色塊和白色塊分別有多少個,然後我們算下要染成白

Codeforces Round #416 (Div. 2) C Vladik and Memorable Trip

根據題目要求,目的地相同的人必須在一個車廂中,或者坐下趟車。因此,每個對人有兩種決策:(1)上車(2)不上車 上車就必須保證,所有該目的的人之間的乘客也必須上車,這樣中間的人同理,這個區間會不斷擴張,直到不會有區間外的人跟這個區間裡的某人目的地相同為止。剩下的區間又會變成子問題,記憶化求解即

Codeforces Round #430 (Div. 2) C. Ilya And The Tree(dfs+最大公約數+因子+樹)

C. Ilya And The Tree time limit per test 2 seconds memory limit per test 256 megabytes i

Codeforces Round #430 (Div. 2) C. Ilya And The Tree

C. Ilya And The Tree time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output