【欧拉计划】4. Largest palindrome product

(本题取 $d=10$,$n=1000-100=900$)

【思路】显然满足要求的最大回文数一定为六位数。因此我们只需要三重循环枚举前三位,然后通过回文数性质得到后三位,从而得到一个六位数。最后枚举是否能表示成两个三位数乘积即可。时间复杂度为 $\mathcal O(d^3n)$:

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
#include<stdio.h>
int main()
{
for(int i=9;i;--i)
{
for(int j=9;j>=0;--j)
{
for(int k=9;k>=0;--k)
{
int x=i*100000+j*10000+k*1000+k*100+j*10+i;
for(int p=100;p<=999;++p)
{
if(x%p)continue;
int q=x/p;
if(q>=100&&q<1000)
{
printf("%d",x);
return 0;
}
}
}
}
}
return 0;
}

【欧拉计划】4. Largest palindrome product

https://hensier.github.io/projecteuler/4/

作者

hensier

发布于

2022-05-01

更新于

2023-01-02

许可协议

评论