RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1538907
Accepted
Настя
Настя
Asked:2023-09-03 17:38:00 +0000 UTC2023-09-03 17:38:00 +0000 UTC 2023-09-03 17:38:00 +0000 UTC

数字系统上的问题,代码给出执行错误

  • 772

大家好,我解决了这个问题:

Ромка недавно вернулся с юбилея своего друга Сашки. Праздник 
отмечался с размахом и Ромка подумал, а что если бы юбилеи были 
чаще? Можно же не ограничиваться десятичной системой счисления. 
Ромка ввёл понятие юбилейности числа, равное максимальному 
количеству нулей в конце записи этого числа в какой-то системе 
счисления с основанием B, где B — целое число, большее единицы. 
Например, юбилейность числа 256 равна 8, так как в двоичной 
системе счисления оно оканчивается на 8 нулей. Ромка хочет узнать, 
когда его ближайший значимый юбилей, если в прошлом месяце ему 
исполнилось X лет? Значимым юбилеем он считает количество лет, 
которое обладает юбилейностью хотя бы L.

Формат входных данных
Единственная строка ввода содержит два целых числа 
X и L(1≤X≤10^12; 1≤L≤50).

Формат результата
Выведите единственное число — ответ на задачу.

Примеры
Входные данные
9990 4
Выходные данные
10000

Входные данные
100 8
Выходные данные
256

Входные данные
100 2
Выходные данные
104

我执行此任务的代码:

X, L = map(int, input().split())
cnt = 10**20
maximum = int(X**(1/L)) + 1
a = [1]*(maximum + 1)
a[0] = 0
a[1] = 0
i = 0
while i <= maximum:
    while not a[i]:
        i += 1
        if i > maximum:
            break
    else:
        k = i**L
        cnt = min(X - (X%k) + k, cnt)
        for j in range(i*i, maximum + 1, i):
            a[j] = 0
        i += 1
print(cnt)

我的解决方案的简要说明:

Ввожу входные данные, если L равно единице, то мы сразу 
можем дать ответ, это X+1, иначе мы создаём заведомо 
очень большую переменную cnt (, в которой хранится ответ, 
потом проходимся циклом while, если в какой-то момент 
i нам подходит, то заканчиваем цикл, иначе, обновляем 
cnt, вспомогательный массив (он нужен для того, чтобы 
искать ответ во вложенном while) заполняем нулями 
(то есть потенциальными ответами) в интервале от i^2 до 
maximum+1 с шагом в i, в конце программы выводим 
получившийся ответ, который лежит в cnt

但是检查系统写道代码在测试5上产生执行错误(复制判决:测试5上的执行错误),请帮忙,我将非常感激,提前感谢!

python
  • 2 2 个回答
  • 163 Views

2 个回答

  • Voted
  1. Best Answer
    MBo
    2023-09-04T01:32:37Z2023-09-04T01:32:37Z

    尝试这个选项:

    我们单独处理案件L=1(您的情况是正确的)并且L=2

    为此L=2,我们将数字从X+1到分解X+4为质因数 - 一旦我们发现某个因数包含在展开式中,且度数不少于2- 这个数字就适合我们。

    对于其余的,我们先对2 的幂L进行排序,然后对奇数进行排序,并找到下一个倍数,选择最小的。LXB**L

    范围结束时的测试时间不超过 0.24 秒 ( X=999999992180, L=2)

     def quadraticfactors(n):
        adder = 1
        i = 2
        while i * i <= n:
            if(n%i==0):
                d = i
                c = 0
                while(n % i == 0):
                    n //= i
                    c += 1
                    if c > 1:
                        return True
            i += adder
            if i == 3:
                adder = 2
        return False
    
    
    def jub3(X, L):
        if L == 1:
            return X + 1
        if L == 2:
            for k in range(1,5):
                if quadraticfactors(X+k):
                    return X + k
        jmin = 10**30
        base = 2
        while True:
            bl = base**L
            ju  = ((X + bl) // bl) * bl
            if ju - X == 1:
                return X + 1
            jmin = min(ju, jmin)
            if bl//2 > X + 1:
                break
            base += 2 if base > 2 else 1
        return jmin
    
    • 2
  2. Oopss
    2023-09-04T00:22:29Z2023-09-04T00:22:29Z

    该函数将十进制数转换为基数中指定的另一个数,然后计算零

    def convert_to(number, base):
        digits = '0123456789abcdefghijklmnopqrstuvwxyz'
        if base > len(digits): return None
        result = ''
        while number > 0:
            result = digits[number % base] + result
            number //= base
        return result
    
    
    n, l = input('->').split()
    n = int(n) + 1
    l = int(l)
    for num in range(n, 1_000_000_000_000):
        for b in range(2, 36): #Системы счисления от двоичной и далее
            if '0' * l == convert_to(num, b)[-l:]:
                print(f'Получается десятичное число {num}, база системы счисления {b}, вид числа в этой системе {convert_to(num, b)}')
                break
        else:
            continue
        break
    

    ->48 1
    Получается десятичное число 49, база системы счисления 7, вид числа в этой системе 100
    ->324 2
    Получается десятичное число 325, база системы счисления 5, вид числа в этой системе 2300
    
    • 0

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5