ベストアンサー
10進数の任意の正の整数nをn = a\_k10 ^ k + a\_として表すことができます。 {k-1} 10 ^ {k-1} + \ ldots + a\_0、ここでa\_i \ in \ {0、1、2、\ ldots、9 \}およびa\_k \ neq0。次にn \ geq 10 ^ k。数字の合計はa\_k + a\_ {k-1} + \ ldots + a\_0 \ leq 9(k + 1)です。この不等式はa\_i \ leq9から得られます。k\ geq 2の場合、18(k + 1)0 ^ kであることが簡単にわかります。これで、要素n = 10a\_1 + a\_0が残ります。これらはコンピューターで簡単に確認できます。これがPythonでのやり方です
[n for n in range(1, 100) if n == 2*sum(map(int, str(n)))]
>>> [18]
したがって、その桁の合計の2倍である唯一の正の整数は18です。非負の整数を許可すると、0もあります。この質問が負の整数に対してどのように解釈されるかはよくわかりません。
回答
数値Nは、最初の100個の正の整数の積です。 Nのすべての桁が書き出された場合、最後のすべてのゼロの隣にあるのはどの桁ですか?
基本的に、100を探しています。そして、最後にすべてのゼロを破棄したいので、右端のゼロ以外の最初の桁を知りたいのです。
1つの方法は、実際に100を計算することです。 bc(LinuxまたはUnixのベンチ計算機)などのプログラムを使用してから、すべてのゼロを破棄して必要な桁に到達します。
分割統治法を使用して問題を解決する別の方法を見てみましょう。
1iで終わるすべての数字を破棄しましょう。 e。 1、11、21、31、41、51、61、71、81、91乗算しても、前の倍数(その時点までに到着した製品)の最後の桁は変更されず、関心がないためです。 100を計算します!とにかくゼロはありません。
2から始まる最初の9つの数字を見てみましょう。
2、3、4、5、6、7、8、9、10
左から右に、2 * 3は6になり、6 * 4は24になり、4を保持して5を掛けると20になります(ゼロを破棄したいので)。2を保持して乗算します。 6を掛けて12を与え、再び2だけを保持し、7を掛けて4(14のうち)を与え、8を掛けて2を与え(32の3を破棄)、9を掛けて8を与えます( 18の1を破棄し、それを10で乗算すると、 8 (0または80を破棄)になります。したがって、 8 という1桁の数字が得られます。
12、13、14、15、16、17でも同様に機能します。 18、19、20は再び 8 を提供します。
次のシリーズ22、23…、28、29、30は
2。
次のシリーズでは、 4
残りのシリーズでも同様に続けると、 4 、 6 、 8 、 8 、 6 、 4 、 2 それぞれ。
これで、最後の仕事は、シリーズごとに到達した上記の桁を乗算することです。
8、8、2、4、6、8、8、6、4、2そしてこれらを乗算すると途中で10桁目を破棄すると、最後の桁として 4 に到達します。
これはthです質問の最終的な答えは、 4 が必要な桁です。