乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。

PAT (Basic Level) Practice 1104 天长地久

问题分析

题设要求给定一个位数K, 一个各位数字之和m, 要求满足条件的A.
需要满足的条件是: A+1的各位数字之和n与给定的m的最大公约数是一个大于2的素数。
题目就是有点绕, 其他还好。
最容易想到的方式就是穷举进行条件检测, 但是会有性能问题, 比如测试点5对穷举的作答就会提示运行超时。

性能优化

  1. 缓存结果,避免重复计算。
  2. 只检查末尾是连续的9的数值。
    • 一个数值如果末尾不是连续的9, 那么就不会是满足题设条件的数。
    • 原因在于:
      • 如果末尾不是连续的9, 则A+1不会发生进位
      • 意味着A+1的各位数字之和n=m+1, (m+1, m)的最大公约数必然是1, 不满足题设条件

生成末尾是连续的9的数值

  1. 假设末尾有连续x个9, x取值区间为[1, m], 则:

    • 前面(m-x)位部分组成的数值取值区间为[10^(m-x-1), 10^(m-x))
    • 对于每一个x, 需要检查的数值个数为: 90^(m-x-1)
    • 需要跳过前面的数值也末尾是9的情况, 防止输出重复答案
  2. 总共需要检查的数值个数就是:
    • Σ(90^(m-x-1)), x∈[1, m]

「PAT乙级真题解析」Basic Level 1104 天长地久 (问题分析+完整步骤+伪代码描述+提交通过代码)相关推荐

  1. 「PAT乙级真题解析」Basic Level 1100 校庆 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT (Basic Level) Practice 1100 校庆 问题分析 题设给定了一 ...

  2. 「PAT乙级真题解析」Basic Level 1033 旧键盘打字 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1033 问题分析 题目设定了一个场景: 有 ...

  3. 「PAT乙级真题解析」Basic Level 1089 狼人杀-简单版 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT (Basic Level) Practice 1089 狼人杀-简单版 问题分析 题 ...

  4. 「PAT乙级真题解析」Basic Level 1082 射击比赛 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT (Basic Level) Practice 1082 射击比赛 问题分析 题设给定 ...

  5. 「PAT乙级真题解析」Basic Level 1072 开学寄语 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1072 开学寄语 问题分析 题设要求查找学 ...

  6. 「PAT乙级真题解析」Basic Level 1053 住房空置率 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1053 问题分析 题设要求统计符合住房空置 ...

  7. 「PAT乙级真题解析」Basic Level 1004 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1004 需求分析 思路一: 以终为始分解需 ...

  8. 「PAT乙级真题解析」Basic Level 1031 查验身份证 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1031 问题分析 我们看到题目详细地描述了 ...

  9. 「PAT乙级真题解析」Basic Level 1018 锤子剪刀布 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1018 锤子剪刀布 问题分析 题目要求统计 ...

最新文章

  1. Deep Reading | 从0到1再读注意力机制,此文必收藏!
  2. 疫情期间用掉了1400亿个!二维码会被人类扫完吗?
  3. Java 8 新特性001_Java 8 Optional 类
  4. 使用k-近邻算法进行分类
  5. 交换机VLAN 模式trunk和access 区别
  6. 如何让word中清晰的图片无损导出为pdf?
  7. 网络营销-渠道、公关
  8. CF1312E Array Shrinking(区间dp模板)
  9. hazelcast 搭建_hazelcast教程 入门
  10. 所谓的不撞南墙不回头
  11. 如何正确修改标题,如何修改标题不会被降权?
  12. dxf文件解析,g代码解析,图片解析C#工程文件
  13. Java:计算圆形和长方形的面积
  14. 海康机器人图像采集卡安装与使用
  15. java Thread Dump 日志分析
  16. 第15章Stata时间序列分析
  17. 字符串中首次出现三次的字符
  18. iTerm安装与配置
  19. 大数据面试题_ETL篇
  20. 2022年7月最新贴吧防删图制作教学视频

热门文章

  1. 一个80年小子的创业道理,和兄弟们共享
  2. Vue导入下载的字体文件
  3. HTTP—TCP/IP—SOCKET理解及浅析
  4. HDMI 2.1 Fixed Rate Link (FRL) mode总览
  5. CentOS安装nvidia显卡驱动的正确方法
  6. Vue渐进(一)入门
  7. 计算机毕设Python+Vue医院药品进销存系统(程序+LW+部署)
  8. 【国庆篇】用html5简单制作一个国旗
  9. tgp饥荒服务器文件夹,《饥荒》TGP版服务器搭建及设置图文教程 TGP版怎么建服务器...
  10. C++考试习题之考试预测题