[B]Project Euler #4

#include <iostream>
#include <math.h>

/*
左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表され
る回文数のうち、最大のものは 9009 = 91 × 99 である。

では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。
*/

#define ORDER 6
#define NUM_MAX 1000

using namespace std;

int main(void)
{
    int numProduct;    //掛けた数
    int odrProduct; //numProductのオーダー
    int odrK;        //オーダー変数
    int pow[ORDER];    //各オーダーの値
    bool flg;        //検出フラグ
    int temp;        //切捨てのための仮数
    int numMax = 0;

    for ( int i = 0 ; i < NUM_MAX ; i++){
        for( int j = 0 ; j < NUM_MAX ; j++ ){

            //掛け算する
            numProduct = i * j;//

            //productのオーダーを知りたい
            odrProduct = ceil(log10( (float)numProduct ));

            //オーダー変数とフラグの初期化
            odrK = 1;
            flg = true;

            for ( int k = 0 ; k < odrProduct ; k++ ){

                //自分より上のオーダーは切り捨て
                temp = numProduct % (odrK * 10);

                //オーダーの値を確保
                pow[k] = temp / odrK;

                odrK *= 10;
            }//next k

            for ( int k = 0 ; k < odrProduct / 2 ; k++ ){

                if(flg){

                    //回文判定
                    if( pow[k]== pow[odrProduct - k -1 ]){
                        flg = true;
                    }
                    else{
                        flg = false;
                    }
                }
            }//next k
            if (flg){
                cout <<"i:"<< i <<"\t j:"<< j <<"\t numProduct:" << numProduct<<"\n";
                if ( numProduct > numMax ) numMax = numProduct;
            }
        }//next j
    }//next i

    cout <<"Max is \t" << numMax;
    getchar();

    return 0;
}