どーも、みつおです。
最大の回文積。回文といえば、上から読んでも下から読んでも「しんぶんし」的なやつですね。
問題
左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である.
では, 3桁の数の積で表される回文数の最大値を求めよ.
出典:Problem4
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
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
コメントを残す