どーも、みつおです。
問題
585 = 1001001001 (2進) は10進でも2進でも回文数である.
100万未満で10進でも2進でも回文数になるような数の総和を求めよ.
(注: 先頭に0を含めて回文にすることは許されない.)
出典:Problem36
解答
using System; using System.Collections.Generic; using System.Linq; namespace Problem36 { class Program { static void Main(string[] args) { Console.WriteLine(Solve()); Console.ReadLine(); } private static long Solve() { long ret = 0; List<long> tmp = new List<long>(); for (int i = 1; i < 1000000; i++) { //10進数が回文かチェック if (IsKaibun(i)) { //2進数が回文かチェック if (IsKaibunNisinsu(i)) { tmp.Add(i); } } } //総和 ret = tmp.Sum(); return ret; } private static bool IsKaibun(int no) { string s = no.ToString(); //回文か判定 return s.Reverse().SequenceEqual(s); } private static bool IsKaibunNisinsu(int no) { //2進数に変換 string s = Convert.ToString(no, 2); //回文か判定 return s.Reverse().SequenceEqual(s); } } }
出力
872187