問題
21000の各桁を全て足し合わせた数を求めよ。
うーん……
結局、21000を計算して桁ごとに足していくしかないんだろうか?
どうにもいい方法を思いつかない。
なら計算回数減らす方向で
2を1000回掛け算するよりも
2を10回掛ける → 210
210を10回掛ける → 2100
2100を10回掛ける → 21000
こうすれば30回で済む。
コード
using System.Diagnostics; using System.Numerics; namespace Problem16 { class Program { static void Main(string[] args) { Debug.WriteLine(Result()); } static BigInteger Result() { string str = Power(Power(Power(2, 10), 10), 10).ToString(); return DigitSum(str); } /// <summary> /// xのy乗を求める /// </summary> static BigInteger Power(BigInteger x, BigInteger y) { BigInteger n = 1; for (int i = 0; i < y; i++) { n *= x; } return n; } /// <summary> /// 各桁の総和を求める /// </summary> static int DigitSum(string s) { int n = 0; foreach (char c in s) { n += (c - '0'); } return n; } } }
解答
1366
基数と乗数からペペペと桁の総和が出ればなぁ……。
改訂版 坂田アキラの 数列が面白いほどわかる本 (坂田アキラの理系シリーズ)
- 作者: 坂田アキラ
- 出版社/メーカー: KADOKAWA/中経出版
- 発売日: 2014/12/13
- メディア: 単行本
- この商品を含むブログを見る
- 作者: 鈴木克昌
- 出版社/メーカー: 河合出版
- 発売日: 2013/12
- メディア: 単行本
- この商品を含むブログを見る
なるほど高校数学 数列の物語―なっとくして、ほんとうに理解できる (ブルーバックス)
- 作者: 宇野勝博
- 出版社/メーカー: 講談社
- 発売日: 2011/01/21
- メディア: 新書
- クリック: 2回
- この商品を含むブログ (3件) を見る