回文を作って検査する方が速いかな?
「どっちの進数でも先頭が0はダメ」とあるので、
奇数の回文を調べればいいということが分かる。
めんどくさかったので100万までの全部の奇数をチェックする感じで書いたけど、
10進数か2進数の回文を作ってから検査した方が速かったと思う。
コード
using System; using System.Diagnostics; namespace Problem36 { class Program { static void Main(string[] args) { P36 p = new P36(); Debug.WriteLine(p.Solve()); } } class P36 { /// <summary> /// コンストラクタ /// </summary> public P36() { } /// <summary> /// 解く /// </summary> public int Solve() { int sum = 0; for (int i = 1; i < 1000000; i+=2) { if(this.IsDecimalPalindrome(i) == true) { if(this.IsBinaryPalindrome(i) == true) { sum += i; } } } return sum; } /// <summary> /// 10進数の回文か? /// </summary> /// <param name="n">検査する値</param> private bool IsDecimalPalindrome(int n) { string s = n.ToString(); for (int i = 0; i < s.Length / 2; i++) { if (s[i] != s[s.Length - 1 - i]) return false; } return true; } /// <summary> /// 2進数の回文か? /// </summary> /// <param name="n">検査する値</param> private bool IsBinaryPalindrome(int n) { string s = Convert.ToString(n, 2); for (int i = 0; i < s.Length/2; i++) { if (s[i] != s[s.Length - 1 - i]) return false; } return true; } } }
答え
872187
- 作者: 石津ちひろ,長新太
- 出版社/メーカー: 河出書房新社
- 発売日: 2007/10/01
- メディア: 単行本
- クリック: 51回
- この商品を含むブログ (8件) を見る
- 作者: せとちとせ
- 出版社/メーカー: 創元社
- 発売日: 2013/01/19
- メディア: 単行本
- クリック: 3回
- この商品を含むブログを見る
- 作者: 小渕哲夫
- 出版社/メーカー: 風詠社
- 発売日: 2017/07/01
- メディア: 単行本
- この商品を含むブログを見る