问题描述如下:
“回文数从两边读值是一样的。两个两位数乘积的最大回文数是9009=99*99,求两个三位数乘积的最大回文数?”
那么我们很快就可以得到实现代码,如下:
private static Long getPalindromicNumber() {
Long max = 0L;
for (Long i = 100L; i <= 999; i++) {
for (Long j = 100L; j <= 999; j++) {
if (isPalindromicNumber(i * j)) {
if (i * j > max) {
max = i * j;
}
}
}
}
return max;
}
private static boolean isPalindromicNumber(Long n) {
StringBuffer s = new StringBuffer(n + "");
s.reverse();
return Long.parseLong(s.toString()) == n;
}
可以得到结果906609。
那么还有地方可以优化么?
如果循环从999开始到100,那么就可以更早的获得最大的回文数而不用因为三位数小而去改变max。
private static Long getPalindromicNumber() {
Long max = 0L;
for (Long i = 999L; i >= 100; i--) {
for (Long j = 999L; j >= 100; j--) {
if (isPalindromicNumber(i * j)) {
if (i * j > max) {
max = i * j;
}
}
}
}
return max;
}
我们再去观察,如果某个回文数888888=924*962,那么也有可能是962*924,两次获得某个回文数,如果判断j>i,应该可以回避此问题,减少将近一半的数值计算。
private static Long getPalindromicNumber() {
Long max = 0L;
for (Long i = 999L; i >= 100; i--) {
for (Long j = 999L; j >= i; j--) {
if (isPalindromicNumber(i * j)) {
if (i * j > max) {
max = i * j;
}
}
}
}
return max;
}
end,请不吝赐教!
@anthor ClumsyBird
分享到:
相关推荐
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个三...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个...
查找由2个三位数组成的乘积所组成的最大回文。 编写两个测试,检查返回对象的正确因子值。 入门 克隆此存储库 要检索所有依赖关系,请运行以下命令: npm install 您的工作将在名为: largest_palindrome_product.js...
两个三位数的最大回文乘积是多少? 背景 回文数在两个方向上都相同。 例如, 101是回文, 91,519和1,111也是91,519 。 例如,由两个两位数的乘积构成的最大回文数为9009: 91 * 99 # => 9009 您的目标是找到由两个...
+ [数位问题](#数位问题) + [动态统计](#动态统计) + [博弈](#博弈) + [母函数](#母函数) + [拟阵](#拟阵) + [线性规划](#线性规划) + [置换群](#置换群) + [问答交互](#问答交互) + [猜数问题](#猜数问题)...
实例154 三重回文数 228 实例155 亲密数 229 实例156 自守数 230 实例157 满足abcd=(ab+cd)2的数 231 实例158 神奇的数字6174 232 实例159 一数三平方 233 5.3 数学问题求解 234 实例160 求等差数列...