
PTA 团体程序设计天梯赛-练习集 L1-046 整除光棍
问题分析:我们需要找到一个由 1 组成的最小数,使得它能被给定的奇数 x 整除。这个最小数的位数 n 和商 s 就是我们要找的答案。 模拟竖式除法:我们通过模拟除法的过程来构造这个由 1 组成的数。每次将余数乘以 10 再加上 1,直到余数变为 0。 计算 s 和 n:每次循环,我们增加一个 1,所以位数 n 是循环的次数。商 s 则是这个由 1 组成的数除以 x 的结果。 读取输入:读取输入的整数 x,它是一个不以 5 结尾的正奇数。 初始化变量:初始化余数为 0,位数 n 为 0。 循环构造余数:每次循环将余数乘以 10 再加上 1,并对 x 取模。直到余数为 0,说明我们找到了一个由 1 组成的数。 计算最终结果:构造由 n 个 1 组成的数 y,计算商 s 和位数 n。 输出结果:输出商 s 和位数 n。
发布日期:2021-05-19 23:51:25
浏览次数:24
分类:精选文章
本文共 678 字,大约阅读时间需要 2 分钟。
为了解决这个问题,我们需要找到一个最小的整数 s 和一个最小的位数 n,使得 x 乘以 s 等于一个由 n 个 1 组成的数字。这个问题可以通过模拟手算除法的竖式方法来解决。
方法思路
解决代码
x = int(input())余数 = 0n = 0while True: 余数 = (余数 * 10 + 1) % x n += 1 if 余数 == 0: breaky = (10 ** n - 1) // 9s = y // xprint(f"{s} {n}")
代码解释
这个方法通过模拟竖式除法的过程,高效地找到满足条件的最小 s 和 n,避免了暴力构造的时间复杂度问题。
发表评论
最新留言
很好
[***.229.124.182]2025年04月11日 07时46分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux 基础-变量,shell基本语法
2019-03-21
opencv图像处理学习(六十)——系统函数
2019-03-21
Qt5模块功能介绍
2019-03-21
SpringMvc前台传Date类型到后台报400错误。
2019-03-21
多模块项目引入SpringSecurity后一直报404
2019-03-21
网络层串讲
2019-03-21
bfc块级格式化上下文的原理
2019-03-21
phpstudy:下载laravel框架配置后访问时报错原因
2019-03-21
Servlet 继承关系
2019-03-21
Servlet开发的5种工具对象
2019-03-21
Http状态码
2019-03-21
Servlet过滤器
2019-03-21
通信过程图
2019-03-21
JSP EL
2019-03-21
JavaBean
2019-03-21
ApacheDButils
2019-03-21
maven核心
2019-03-21
maven约定的目录结构
2019-03-21
POM
2019-03-21