公式
B - 459 解説
by
B - 459 解説
by
mechanicalpenciI
問題文の指示通り、各文字列 \(S_i\) を読み込み、\(1\) 文字目を基準に \(C_i\) を求めて連結すれば良いです。
\(S_i\) の \(1\) 文字目と\( C_i\) を対応させる方法としてはいくつか考えられますが、配列または文字列を用いるとやや実装が楽になるでしょう。
やや実装量は多くなりますが、if 文のみを用いても実装することもできます。
どのような方法を用いても基本的に時間計算量は問題ありません。
c++ による実装例1:
#include <bits/stdc++.h>
using namespace std;
int main(void){
string StoC="22233344455566677778889999";
int n;
string s,ans;
cin>>n;
for(int i=0;i<n;i++){
cin>>s;
ans+=StoC[s[0]-'a'];
}
cout<<ans<<endl;
return 0;
}
c++ による実装例2:
#include <bits/stdc++.h>
using namespace std;
int main(void){
string StoC="";
for(int i=2;i<=9;i++){
for(int j=0;j<3;j++)StoC+=(char)('0'+i); //3 characters for 2 3 4 5 6 8
if((i==7)||(i==9))StoC+=(char)('0'+i); //4 characters for 7 9
}
int n;
string s,ans;
cin>>n;
for(int i=0;i<n;i++){
cin>>s;
ans+=StoC[s[0]-'a'];
}
cout<<ans<<endl;
return 0;
}
Python による実装例:
StoC="22233344455566677778889999"
ans=""
n=int(input())
s=list(input().split())
for i in range(n):
ans+=StoC[ord(s[i][0]) - ord('a')]
print(ans)
投稿日時:
最終更新:
