我已經解決了項目歐拉問題16,但發現這個相當新穎的方法,但我不能讓我的周圍使用(從http://www.mathblog.dk/project-euler-16/)技術頭:這個C#代碼如何解決答案?
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));
如何進行數學上的第一種方式工作,這是很酷,但我需要一些解釋,以幫助我瞭解,所以如果有人會這麼好心給我解釋,我真的很感激。
注意:如果我在錯誤的部分張貼,請讓我知道更好的地方問。
我花了更長的時間來了解你的技術比我花了理解另一個代碼。看起來很明顯或傳統的東西很大程度上取決於你習慣的東西。 – CodesInChaos 2012-08-15 15:14:11
哈哈對不起 – 2012-08-15 15:15:01
爲什麼'.ToString()。Select(char.GetNumericValue).Aggregate()'?擺脫凌亂的拉姆達。 – 2015-01-22 18:00:40