どーも、みつおです。
2^1000とかlong型で表せませんからw
今回も「C#でプロジェクトオイラーを解く(問題13「大きな数の足し算」)」と同様にBigIntegerを使う。
BigIntegerの使い方は、「[C#]桁数が非常に大きい数値の計算 – BigIntegerを利用したInt64を超える数値の計算」を参考にすればいいよ。
問題
2^15 = 32768 であり, 各位の数字の和は 3 + 2 + 7 + 6 + 8 = 26 となる.
同様にして, 2^1000 の各位の数字の和を求めよ.
注: Problem 20 も各位の数字の和に関する問題です。解いていない方は解いてみてください。
出典:Problem16
解答
using System;
using System.Numerics;
namespace Problem16
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Solve());
Console.ReadLine();
}
private static int Solve()
{
int ret = 0;
BigInteger bigint = new BigInteger();
//2^1000を求める
bigint = (BigInteger)Math.Pow(2, 1000);
//2^1000を文字列に変換
string strdata = bigint.ToString();
//桁数分ループ
for(int i = 0;i < strdata.Length;i++)
{
//各桁を足していく
ret += int.Parse(strdata[i].ToString());
}
return ret;
}
}
}
出力
1366