#include <iostream>
#include <algorithm>
using namespace std;
int GeneratePalindromicNumber(int nFirstHalf)
{
int nResult = nFirstHalf;
int nTemp = nFirstHalf;
while (nTemp != 0)
{
nResult *= 10;
nResult += nTemp % 10;
nTemp /= 10;
}
return nResult;
}
bool IsProductOfTwo3Digit(int nNumber)
{
int nMin = max(100, nNumber / 999);
int nMax = min(999, nNumber / 100);
for (int i = nMin; i <= nMax; ++i)
{
if (nNumber % i == 0)
{
return true;
}
}
return false;
}
int main()
{
int nResult = 0;
for (int i = 906; i >= 100; --i)
{
int nPalindromicNumber = GeneratePalindromicNumber(i);
if (IsProductOfTwo3Digit(nPalindromicNumber))
{
nResult = nPalindromicNumber;
break;
}
}
cout << nResult;
return 0;
}
http://projecteuler.net/problem=4
最新推荐文章于 2016-02-28 21:52:55 发布
此程序通过生成回文数并检查其是否为两个三位数的乘积来验证数学性质。它从最大的三位数开始递减,直到找到满足条件的回文数。
1万+

被折叠的 条评论
为什么被折叠?



