PAST01-A 解説
A - 2倍チェック
3桁の整数が与えられて2倍する問題ですが、入力に英小文字が紛れ込むことがあるので、その場合はerror
を出力します。1文字ずつ見ていって、英小文字が出たかどうかを管理すれば解くことができます。
文字列を数値に変換するのには、Pythonではint
、C++ではstoi
が使えます。
S = input() isnumber = True for i in S: if not '0' <= i <= '9': isnumber = False if isnumber: print(int(S) * 2) else: print("error")
#include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; bool isnumber = true; for (int i = 0; i < 3; i++) { if (!('0' <= S[i] && S[i] <= '9')) { isnumber = false; } } if (isnumber) { cout << stoi(S) * 2 << '\n'; } else { cout << "error\n"; } }
また、数字として解釈できない文字列をint
またはstoi
に渡すとエラーが検出されるので、それを利用して解くこともできます。
S = input() try: print(int(S) * 2) except: print("error")
ただし、C++では先頭に0
があると8進数、0x
があると16進数として解釈されるので、そのケースを除くと上のC++のコードとほぼ同じになり効率が悪くなります。