読者です 読者をやめる 読者になる 読者になる

Google入社試験(非公認)の面白い問題

私は前職(CAD系のソフトウェアベンダー)にいた際、
入社試験(算数・数学)の作成を担当していました。


その時に常々思っていたのが、
新しい問題を創作するのは非常に難しい
ということです。
現在務めている会社はまだ採用活動を本格的にはやっていませんが、
いずれ問題を作ることになればまた産みの苦しみを覚悟しなければならないでしょう。


そんな時に参考にしていたのが、既存のパズルや問題です。
図書館で数学や論理パズルの本を読みあさっては題材を探したりしていました。
インターネットで面白い問題をチェックすることも欠かさずやっていましたが、
久しぶりにネットをウロウロしていたらGoogleの入社試験の問題を見つけました。


n以下の自然数の中に"1"という文字が現れる回数をカウントする関数、f(n)があります。
例えば

  • f(1) = 1
  • f(2) = 1
  • f(10) = 2
  • f(13) = 6

という具合です。
このとき、f(n) = n となるnのうち、2番目に大きいものを求めなさい。


非常に良く出来ていて、プログラムで解こうとしてもしても一筋縄ではいきません。


まだ自分で答えを出せていないので、
まずは紹介するだけにとどめておきます。
いずれ解答を書くつもりですが、
興味を持たれた方は是非解いてみてください。


[非公認] Googleの入社試験

[非公認] Googleの入社試験