Python - "Good" numbers -

Здравейте,
програмата ми във visual studio code работи и изкарва правилен output, само че test cases изглеждат по този начин. Бихте ли ми помогнали да разбера, къде се намира грешката ми.
Test case #1: Invalid Return [0.06 s, 9.86 MB]

Test case #2: Short circuit [N/A, N/A]

Test case #3: Short circuit [N/A, N/A]

Test case #4: Short circuit [N/A, N/A]

Test case #5: Short circuit [N/A, N/A]

Test case #6: Short circuit [N/A, N/A]

Test case #7: Short circuit [N/A, N/A]

Test case #8: Short circuit [N/A, N/A]

Test case #9: Short circuit [N/A, N/A]

Test case #10: Short circuit [N/A, N/A]

Test case #11: Short circuit [N/A, N/A]

Test case #12: Short circuit [N/A, N/A]

Test case #13: Short circuit [N/A, N/A]

Test case #14: Short circuit [N/A, N/A]

down_limit = int(input())

up_limit = int(input())

good = 0

while down_limit <= up_limit:

digits = [int(x) for x in str(down_limit)]

i = 0

detector = True

count = 0

while i < len(digits):

    if digits[i] != 0:

        if down_limit % digits[i] != 0:

            detector = False

        else:

            count += 1

    else:

        count += 1

   

    i = i + 1



if detector == True and count == len(digits):

    good += 1

down_limit = down_limit + 1

print(good)

Здравей,

бих те посъветвал първо да сложиш тук някъде и условието на задачата за тези, които нямат достъп до нея, за да се ориентираме.
Иначе на пръв поглед не забелязвам нещо нередно

Логиката е топ! Така като гледам кода, силно ме навежда на мисълта, че условието на задачата е да се търсят всички поредни числа между начална и крайна стойност, за които good да се увеличава с 1, всеки път когато имаш число, което се дели без остатък от всичките си цифри.

По спомен от задачите, които решавахме, може би проблемът е в input-a. С твоя код се очаква вход от типа на:
10
12

Докато вероятно системата подава двете граници на редицата на един ред :wink: :
10 12

Лек HINT: Щом си ок с comprehension-ите :wink: може да се ползва нещо от рода на:
down_limit, up_limit = [int(x) for x in input().split()]

2 Likes
def is_good(number):
    num_string = ''.join(str(number).split('0'))
    for dev in num_string:
        if number % int(dev) != 0:
            return False
    return True


a, b = [int(x) for x in input().split(' ')]

sum_good = 0
for i in range(a, b + 1):
    if is_good(i):
        sum_good += 1

print(sum_good)

Най-спретнатото решение.

1 Like
numbers = input().split(' ')
a = int(numbers[0])
b = int(numbers[1])

Още една идея за инпута по-лесно се чете от компрехеншън.

мерси много!

1 Like