Если вам подойдёт одним циклом:
arr = {
~~-9 : { 10: 0, 5: 0, 2: 0 } , -8 : { 10: 0, 5: 0, 2: 0 } ,
~~-7 : { 10: 0, 5: 0, 2: 0 } , -6 : { 10: 0, 5: 0, 2: 0 } ,
~~-5 : { 10: 0, 5: 0, 2: 0 } , -4 : { 10: 0, 5: 0, 2: 0 } ,
~~-3 : { 10: 0, 5: 0, 2: 0 } , -2 : { 10: 0, 5: 0, 2: 0 } ,
~~-1 : { 10: 0, 5: 0, 2: 0 } , 0 : { 10: 0, 5: 0, 2: 0 } }
n = int(input())
for i in range(1, n + 1):
~~arr[i] = {
10 : (i >= 10) + arr[i - 10][10] + arr[i - 10][5] + arr[i - 10][2],
5: (i >= 5) + arr[i - 5][5] + arr[i - 5][2],
2: (i >= 2) + arr[i - 2][2]
~~ }
print(arr[n][10] + arr[n][5] + arr[n][2] + 1)
Возможно есть ошибка.
Объяснение:
Решение получаем с калькулятора. Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
1101010 = 26*1 + 25*1 + 24*0 + 23*1 + 22*0 + 21*1 + 20*0 = 64 + 32 + 0 + 8 + 0 + 2 + 0 = 106
Для перевода дробной части необходимо разделить разряд числа на соответствующую ему степень разряда
1101 = 2-1*1 + 2-2*1 + 2-3*0 + 2-4*1 = 0.8125
Таким образом, число 1101010,11012 в десятичной системе счисления записывается как 106,8125.
ПРИМЕР 2. Перевести число 42,678 в десятичное представление.
Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
42 = 81*4 + 80*2 = 32 + 2 = 34
67 = 8-1*6 + 8-2*7 = 0.859375
Таким образом, число 42,678 в десятичной системе счисления записывается как 34,859375.
ПРИМЕР 3. Перевести число E6,7116 в десятичное представление.
E6 = 161*14 + 160*6 = 224 + 6 = 230
71 = 16-1*7 + 16-2*1 = 0.44140625
Таким образом, число E6,7116 в десятичной системе счисления записывается как 230,44140625
Если вам подойдёт одним циклом:
arr = {
~~-9 : { 10: 0, 5: 0, 2: 0 } , -8 : { 10: 0, 5: 0, 2: 0 } ,
~~-7 : { 10: 0, 5: 0, 2: 0 } , -6 : { 10: 0, 5: 0, 2: 0 } ,
~~-5 : { 10: 0, 5: 0, 2: 0 } , -4 : { 10: 0, 5: 0, 2: 0 } ,
~~-3 : { 10: 0, 5: 0, 2: 0 } , -2 : { 10: 0, 5: 0, 2: 0 } ,
~~-1 : { 10: 0, 5: 0, 2: 0 } , 0 : { 10: 0, 5: 0, 2: 0 } }
n = int(input())
for i in range(1, n + 1):
~~arr[i] = {
10 : (i >= 10) + arr[i - 10][10] + arr[i - 10][5] + arr[i - 10][2],
5: (i >= 5) + arr[i - 5][5] + arr[i - 5][2],
2: (i >= 2) + arr[i - 2][2]
~~ }
print(arr[n][10] + arr[n][5] + arr[n][2] + 1)
Возможно есть ошибка.
Объяснение:
Решение получаем с калькулятора. Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
1101010 = 26*1 + 25*1 + 24*0 + 23*1 + 22*0 + 21*1 + 20*0 = 64 + 32 + 0 + 8 + 0 + 2 + 0 = 106
Для перевода дробной части необходимо разделить разряд числа на соответствующую ему степень разряда
1101 = 2-1*1 + 2-2*1 + 2-3*0 + 2-4*1 = 0.8125
Таким образом, число 1101010,11012 в десятичной системе счисления записывается как 106,8125.
ПРИМЕР 2. Перевести число 42,678 в десятичное представление.
Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
42 = 81*4 + 80*2 = 32 + 2 = 34
Для перевода дробной части необходимо разделить разряд числа на соответствующую ему степень разряда
67 = 8-1*6 + 8-2*7 = 0.859375
Таким образом, число 42,678 в десятичной системе счисления записывается как 34,859375.
ПРИМЕР 3. Перевести число E6,7116 в десятичное представление.
Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
E6 = 161*14 + 160*6 = 224 + 6 = 230
Для перевода дробной части необходимо разделить разряд числа на соответствующую ему степень разряда
71 = 16-1*7 + 16-2*1 = 0.44140625
Таким образом, число E6,7116 в десятичной системе счисления записывается как 230,44140625