公式

A - AtCoder Quiz 3 解説 by Nyaan


プログラミングの学習を始めたばかりで何から手をつけるべきかわからない方は、まずは「practice contest」(https://atcoder.jp/contests/practice/) の問題A「Welcome to AtCoder」をお試しください。言語ごとに解答例が掲載されています。
また、プログラミングコンテストの問題に慣れていない方は、「AtCoder Beginners Selection」(https://atcoder.jp/contests/abs) の問題をいくつか試すことをおすすめします。


まず、問題文を正確に読解すると、出力するべき数は

  • \(N \lt 42\) のとき:\(N\)
  • \(42 \leq N\) のとき : \(N + 1\)

となります。これは if 文を使用するか、 \(N \geq 42\) のときに \(N\) をインクリメントすることで場合分けに対応することができます。

あとは \(3\) 桁になるようにゼロ埋め (zero-padding) を行うことができれば問題の指示通りの文字列を出力することができます。 これは、たとえば C++ 言語では iomanip ライブラリにある std::setfill 関数(日本語)std::setw 関数(日本語) を用いて

cout << setfill('0') << setw(3) << N;

のように記述すれば簡潔にゼロ埋めを記述することができます。また、別解として

if(N < 100) cout << "0";
if(N < 10) cout << "0";
cout << N;

のように条件分岐を用いて実装しても問題ないです。
以上の説明通りに実装することでこの問題を解くことができます。

C++ での実装例は以下の通りです。

#include <iomanip>
#include <iostream>
#include <string>
using namespace std;

int main() {
  int N;
  cin >> N;
  if (N >= 42) N++;
  cout << "AGC";
  cout << setfill('0') << setw(3) << N;
  cout << endl;
}

投稿日時:
最終更新: