Project Euler 4
A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. Find the largest palindrome made from the product of two 3-digit numbers.
回文数とは、逆から数字を読んでも同じ数になる数のことです。2つの2桁の数の積からできる最大の回文数は9009 = 91×99です。 2つの3桁の数からできる最大の回文数を求めなさい。
Mathematica
For[i = 100, i < 1000, i++, For[j = 100, j < 1000, j++, tmp = ToString[i*j]; A = If[tmp == StringReverse[tmp] && A < i*j, i*j, A] ] ] A
結構重い処理になってしまいました。
C/C++
/* project euler 004 回文数とは、逆から数字を読んでも同じ数になる数のことです。2つの2桁の数の積からできる最大の回文数は9009 = 91×99です。 2つの3桁の数からできる最大の回文数を求めなさい。 */ #include <iostream> #include <sstream> #include <string> #include <algorithm> using namespace std; string IntToString(int); bool is_palindromic(int); int main(){ int ans = 0; for(int i=0 ; i<1000 ; i++){ for(int j=i ; j<1000 ; j++){ if(is_palindromic(i*j) && i*j > ans) ans = i*j; } } cout << ans << endl; } /* numが回文数かどうかを調べる。 */ bool is_palindromic(int num){ static string str1, str2; str1 = IntToString(num); str2 = str1; reverse(str2.begin(), str2.end()); return str1==str2; } /* int型をString型に変換する */ string IntToString(int num){ stringstream ss; ss << num; return ss.str(); }
先が思いやられる・・・