どーも、みつおです。
最大の回文積。回文といえば、上から読んでも下から読んでも「しんぶんし」的なやつですね。
問題
左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である.
では, 3桁の数の積で表される回文数の最大値を求めよ.
出典:Problem4
解答
using System; using System.Linq; namespace Problem4 { class Program { static void Main(string[] args) { Console.WriteLine(Solve()); Console.ReadLine(); } private static int Solve() { int ret = 0; int sanketa = 999; int sanketamax = sanketa * sanketa; //3桁の積の最大値からループ for(int i = sanketamax; 0 < i; i--) { //回文か判定 if (IsKaibun(i)) { //3桁の積か判定 if (IsSeki(i)) { ret = i; break; } } } return ret; } private static bool IsKaibun(int no) { //数値を文字列に変換 string s = no.ToString(); //文字列を反転し、等しいか判定 return s.Reverse().SequenceEqual(s); } private static bool IsSeki(int no) { //3桁の数値でループ for(int i = 999; 100 < i; i--) { //3桁の数値で割り切れるか判定 if(no % i == 0) { int sahen = no / i; //3桁かどうか判定 3桁ならtrueを返す if (100 <= sahen && sahen <= 999) return true; } } //3桁でないならfalseを返す return false; } } }
出力
906609