неправильный ответ для большого ввода - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь определить, можно ли выразить целое число в форме a ^ b, где b> 1, а заданное целое число больше 0. Мой код работает нормально для всех тестовых случаев, кроме одного.Это дает неправильный ответ для следующего ввода: 536870912 Я не могу понять, почему.

 def isPower(self, A):
    if(A==1):
        return (1)
    for i in range(2,int(A**0.5)+1):
        val=log(A,i)
        if(int(val)-val==0):
            return (1)
    else:
        return (0)

1 Ответ

0 голосов
/ 10 октября 2018

Это решит:

from  math import log
def isPower(A):
    if(A==1):
        return (1)
    if (A&-A)==(A):
        return (1)        
    for i in range(2,int(A**0.5)+1):
        val=log(A,i)
        if(int(val)-val==0):
            return (1)
    else:
        return (0)

Если вы ищете причину, почему она не работает, пожалуйста, обратитесь по ссылке ниже:

Работа с точностью в математических операциях Python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...