世界のナベアツ問題

http://q.hatena.ne.jp/1207585413
http://b.hatena.ne.jp/entry/http://q.hatena.ne.jp/1207585413


「文字列比較はスマートでない」と思っている人が割といるみたい。
「10進数のいずれかの桁に3が含まれる」というのは

\large\displaystyle Sn=a_1+10a_2+10^{2}a_3...+10^{n-1}a_{n}=\sum_{k=1}^{n}10^{k-1}a_{k}(ただしa_kは0から9までの整数)
について、a_1, a_2, ... , a_nのうち少なくとも1つは3に等しい

ということを言っているにすぎないので、結局a_kの値を総当たりでチェックすることになる。繰り返し10で割って余りを調べるのも、各桁の文字列比較をするのも、やってることは総当たりチェックなので、本質的には同じこと。

まぁ、要は↓のはてブコメントと同じことを数式を使って言ってるだけです。

倍数と違って「3がつく」は十進表現限定の問題だから、10で割って桁ごとに見るでもいいし、十進表現に変換する=文字列化も同じくらい自然