私はプロジェクトのオイラー問題 16 を解決しましたが、このかなり斬新なアプローチを発見しましたが、使用されている手法について理解できません ( http://www.mathblog.dk/project-euler-16/から):
int result = 0;
BigInteger number = BigInteger.Pow(2, 1000);
while (number > 0) {
result += (int) (number % 10);
number /= 10;
}
私のバージョンはより従来のように見えますが、上記のアプローチの方がクールだと思います。
var result = BigInteger
.Pow(2, 1000)
.ToString()
.Aggregate(0, (total, next) => total + (int) Char.GetNumericValue(next));
数学は最初のアプローチでどのように機能しますか、それはクールですが、理解するのに役立つ説明が必要なので、誰かが親切に説明してくれたら本当にありがたいです.
注: 間違ったセクションに投稿した場合は、より適切な質問先をお知らせください。