Kazun の競プロ記録

競技プログラミングに関する様々な話題を執筆します.

AtCoder Beginner Contest 304 B問題 Subscribers

問題

atcoder.jp

提出解答

atcoder.jp

問題の概要

 N の値に応じて, 以下の処理をせよ.

  •  N \leq 10^3-1 ならば,  N を出力せよ.
  •  10^3 \leq N \leq 10^4-1 ならば,  N の一の位を切り捨てた整数を出力せよ.
  •  10^4 \leq N \leq 10^5-1 ならば,  N の十の位以下を切り捨てた整数を出力せよ.
  •  10^5 \leq N \leq 10^6-1 ならば,  N の百の位以下を切り捨てた整数を出力せよ.
  •  10^6 \leq N \leq 10^7-1 ならば,  N の千の位以下を切り捨てた整数を出力せよ.
  •  10^7 \leq N \leq 10^8-1 ならば,  N の万の位以下を切り捨てた整数を出力せよ.
  •  10^8 \leq N \leq 10^9-1 ならば,  N の十万の位以下を切り捨てた整数を出力せよ.

制約

  •  0 \leq N \leq 10^9-1

解法

上の場合分けをそのまま実装してもよいが,  N \geq 1000 のときは命令をよく見ていみると, 上3桁以外を切り捨てろという処理であるから, 次のようにして出力すべき整数を求めることができる.

  •  N の桁数を  d とする. 出力すべき整数は  N の上3桁に  10^{d-3} を掛けた整数である.

 N の上3桁については,  N を文字列とすると簡単に取得できる.

また,  N \leq 10^3-1 のときはそのまま  N を出力することに注意.