Форум сайта python.su
0
Даны натуральные числа m и n. Найти сумму m последних цифр числа n.
Смог придумать только, как найти сумму всех цифр:
n = input('Enter number: ') n = int(n) s = 0 while n > 0: s = s + n % 10 n = n // 10 print(s)
s = 0 for n in input('Enter number: '): s += int(n) print(s)
Офлайн
75
Denis_Yakovenkoузнал последнее
n%10 = последняя цифра числа, а вот как найти предпоследнюю и так далее цифры…. Возможно можно как-то использовать функцию trunc и деление нацело без остатка (//)
n = 536262783473275 sum([int(x) for x in str(n)][4:])
Отредактировано Singularity (Сен. 30, 2013 22:39:26)
Офлайн
0
Singularity
я не понял совсем….
вот, если взять к примеру число n = 1342:
узнал последнее: n%10 = 2
узнал остаток (??): n/10 - 134.2 (остаток 2)
узнал последнее у остатка: ???
и ведь это всё это дело нужно еще и в цикл запихнуть…
Офлайн
0
Singularity
Объясните, пожалуйста
Отредактировано Denis_Yakovenko (Сен. 30, 2013 22:54:26)
Офлайн
75
Denis_Yakovenko
ок , не остаток.
Можно отнимать
m = 1999 (m - (m % 10 )) /10 199
Офлайн
33
Denis_Yakovenko
Отредактировано Budulianin (Сен. 30, 2013 23:18:01)
Офлайн
1
Denis_YakovenkoНу python-like решение уже показали, но что мешает свести одну задачу к другой? Возьми остаток от деления на 10^m и ищи сумму всех его чисел. А классическим решением будет добавление счётчика в цикл.
Смог придумать только, как найти сумму всех цифр:
Офлайн
857
Denis_Yakovenko
Даны натуральные числа m и n. Найти сумму m последних цифр числа n.
>>> def f(n, m): ... s = 0 ... while m > 0: ... s += n % 10 ... n //= 10 ... m -= 1 ... return s ... >>> f(12345, 3) 12 >>> f(12345, 2) 9 >>>
Офлайн
8
n = 1234567 m = 4 sum([int(i) for i in str(n)[-m:]])
Офлайн
0
n=12345 m=2 sum([int(x) for x in str(n % 10 ** m)])
Офлайн