package com.ten;
import java.util.Scanner;
/*
两个三位数相乘,需要模拟两数相乘才行,
因为直接用值的范围,该值可能为质数,不能被整除
100*100=10000
999*999=998001
*/
public class Exercise04 {
public static void main(String[] args) {
/*int res=0;
for(int i=100;i<=9801;i++) { //直接用值的范围不正确
if(f(i)) { //是回文数
res=i; 997799
}
}*/
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int res=0;
int min = (int) (Math.pow(10,n-1));
int max = (int) (Math.pow(10,n)-1);
for(int i=max;i>=min;i--) {
for(int j=max;j>=min;j--) {
int temp=i*j;
if (f(temp) && temp>res) {
res=temp;
}
}
}
System.out.println(res); //906609
}
//求回文数
public static boolean f(int num){
String str = num+"";
int length = str.length();
int num2=0;
for(int i=0;i<length/2;i++) {
num2=num%10+num2*10;
num=num/10;
}
if(length%2!=0) { //奇数的情况需要对原数据多除一次,中间的值不用比较
num=num/10;
}
return num==num2;
}
}
【欧拉计划】problem4最大回文乘积
最新推荐文章于 2024-08-08 20:27:31 发布