当前位置: 首页 > news >正文

leetcode 479. 最大回文数乘积

题目如下
在这里插入图片描述

看完题目后没有想到取巧的办法所以尝试使用枚举法。
使用枚举法之前先回答两个问题:
1. 如何构造回文串?
2. 如何判断是否存在两个n位整数相乘可以得到这个回文串?
显然n位数与n位数相乘必然是2n位数也就是说最大回文整数长度必然是2n,
所以我们只需要从pow(10,n+1)开始遍历直到pow(10,n) (实际上不用那么多因为这样的回文串很近)然后翻转构造回文串就行。
至于第二个问题也很容易判断一个数是否有除了1的因子只需要判断从这个数到开根号范围内是否存在可以整除的数就行。
所以综合两点可以写出枚举代码。

通过代码

class Solution {
public:int largestPalindrome(int n) {if(n == 1)return 9;  long long s = 9;long long ans;long long t;  for(int i = 1;i < n;i++) {s *= 10;s += 9;}s *= s;//s是n位数与n位数相乘的最大值for(int i = pow(10,n) - 1;i >= pow(10,n - 1);i--) {t = i;ans = i;for(int j = 0;j < n;j++) {ans *= 10;ans += (t % 10);t /= 10;}if(ans <= s) {for(int k = pow(10,n) - 1;k >= sqrt(ans);k--) {if(ans % k == 0)return  ans % 1337;}}} return ans % 1337; 
}
};

在这里插入图片描述

当然我们可以看到n是从1到8所以我们还可以使用打表的手法。
class Solution {
public:int largestPalindrome(int n) {if(n == 1)return 9;if(n == 2)return 987;if(n == 3)return 123;if(n == 4)return 597;if(n == 5)return 677;if(n == 6)return 1218;if(n == 7)return 877;if(n == 8)return 475;return 0;
}
};

在这里插入图片描述

http://www.lryc.cn/news/524516.html

相关文章:

  • 独立搭建UI自动化测试框架
  • 62,【2】 BUUCTF WEB [强网杯 2019]Upload1
  • Spring Boot 整合 ShedLock 处理定时任务重复执行的问题
  • 常见Arthas命令与实践
  • Glide加载gif遇到的几个坑
  • STM32学习之通用定时器
  • MiniMax-Text-01——模型详细解读与使用
  • Redis的Windows版本安装以及可视化工具
  • tensorflow源码编译在C++环境使用
  • 第四届机器学习、云计算与智能挖掘国际会议
  • #漏洞挖掘# 一文了解什么是Jenkins未授权访问!!!
  • QT QListWidget控件 全面详解
  • 【Vim Masterclass 笔记25】S10L45:Vim 多窗口的常用操作方法及相关注意事项
  • 包文件分析器 Webpack Bundle Analyzer
  • 代码随想录day14
  • react19新API之use()用法总结
  • 67,【7】buuctf web [HarekazeCTF2019]Avatar Uploader 2(未完成版)
  • ANSYS HFSS 中的相控天线阵列仿真方法
  • stm32 L051 adc配置及代码实例解析
  • KUKA示教器仿真软件OfficeLite8.6.2,EthernetKRL3.1.3通信
  • Erlang语言的并发编程
  • 【数据挖掘实战】 房价预测
  • 我的创作纪念日,纪念我的第512天
  • 【科研建模】Pycaret自动机器学习框架使用流程及多分类项目实战案例详解
  • PHP语言的网络编程
  • 计算机的错误计算(二百一十八)
  • 《鸿蒙Next原生应用的独特用户体验之旅》
  • MDX语言的字符串处理
  • 游戏AI,让AI 玩游戏有什么作用?
  • Java 设计模式 二 单例模式 (Singleton Pattern)