題目描述
英語老師賴老師最近在班上組織了一個單詞遊戲,活動是這樣組織的:
(1)把全班分爲n個小組,每個小組寫一個學過的單詞(均爲小寫)和一個整數k;
(2)每個小組根據該單詞中每個字母的字典順序上推或下推k個位置,經過變換後得到一個新單詞。推移規則是:如果k爲正數則下推,否則上推,當推移超越邊界時回到另一端繼續推移。例如,單詞爲at,k=8則新單詞爲ib,字母t下移到邊界z還不夠,則再從第一個字母a開始繼續推移。
(3)每個小組把得到的新單詞和整數k展示到黑板上。
(4)賴老師緊接着給出了一個字母,規定哪個小組最快完成以下任務則獲勝:統計出該字母在所有小組開始寫出的單詞中出現的次數。
輸入輸出格式
輸入格式:
輸入文件共n+2行:
第1行爲賴老師給出的一個字母;
第2行爲數字n(2≤n≤30),表示全班分爲n個小組;
接着是n行,每行爲每個小組得到的新單詞(2≤單詞長度≤14),然後空一個格,後接一個整數k(-1000≤k≤1000)。
輸出格式:
輸出文件只有一個數,爲給定字母在所有小組開始寫出的單詞中出現的次數。
輸入輸出樣例
輸入樣例#1:
e
2
welcome -2
happy 3
輸出樣例#1:
2
#include<bits/stdc++.h>
using namespace std;
char ch;
int n,ans=0;
string s;int x,len;
int main()
{
cin>>ch>>n;
for(int i=1;i<=n;i++)
{
cin>>s>>x;
len=s.length();
x%=26;
for(int j=0;j<len;j++)
{
if(x>0)
{
s[j]-=x;
if(s[j]<97) s[j]+=26;
}
if(x<=0)
{
s[j]+=fabs(x);
if(s[j]>122) s[j]-=26;
}
if(s[j]==ch) ans++;
}
}
cout<<ans<<endl;
return 0;
}