Upgrade to Pro — share decks privately, control downloads, hide ads and more …

KOJ 0002 Extended FizzBuzz 解説

kagamiz
March 29, 2013

KOJ 0002 Extended FizzBuzz 解説

OkNCT-ICT 2013 春合宿 Day 5 (らしい) で解説したもの.

kagamiz

March 29, 2013
Tweet

More Decks by kagamiz

Other Decks in Programming

Transcript

  1. 問題の概要 • 数字 N と発言 S が与えられます . • N

    が 3 の倍数なら Fizz, 5 の倍数なら Buzz, 3 の倍数かつ 5 の倍数なら FizzBuzz と出力 . そうじゃなければ N を そのまま出力 . • S が上記の基準とおりなら YES, そうでなければ NO を出力 . • N 10^100 ≦
  2. N 10^100 ≦ • int 型や long long 型 ,

    __int64 型で整数を入力→死 • 文字列として N だったり S だったりを読み込もう .
  3. 文字列として入力できた (AA 略 ) • どうやって比較しよう (AA 略 ) •

    if (N % 3 == 0) (AA 略 ) • Compile Error (AA 略 ) • ▂▅▇█▓▒░('ω') █▇▅▂ ░▒▓ うわああああ
  4. 倍数条件 • 数 x が 3 の倍数 <=> 数 x

    の各桁の和が 3 の倍数 • 数 x が 5 の倍数 <=> 数 x が 5 か 0 で終わる • これを判定すれば良いのであった ( 完 )
  5. Let's 実装 • 数 x が 3 の倍数 <=> 数

    x の各桁の和が 3 の倍数 for ( すべての桁 ): S ← S + 桁 i if (S が 3 の倍数 ) 数 x は 3 の倍数 • 数 x が 5 の倍数 <=> 数 x が 5 か 0 で終わる if ( 最後の桁が 0 か 5) 数 x は 5 の倍数
  6. ちなみに • この問題は , 合同式というものの性質を知っていれば , 倍数条件を考えずに任意の数 A と B

    で同じ事が出来 ます . • 練習問題 => Extended Extended FizzBuzz (KOJ 0004) http://koj.cms.am/show.php?p=4 (japlj さんの出題 )