Given a number, we need to find the sum of all the digits of a number which we get after raising the number to a specified power.
Examples:
Input: number = 5, power = 4 Output: 13 Explanation: Raising 5 to the power 4 we get 625. Now adding all the digits = 6 + 2 + 5 Input: number = 9, power = 5 Output: 27 Explanation: Raising 9 to the power 5 we get 59049. Now adding all the digits = 5 + 9 + 0 + 4 + 9
The approach for Python is explained. we have used pow() function to calculate the base to the power value. Then we have extracted every digit as string using str() method. Since we can’t calculate the sum of strings, we converted every string digit back to integer using int() method. Finally, we used sum() function to get the sum of all the digits. This solution will look very simple in Python but it won’t be so short in other languages. After running both the codes, one can compare the time elapsed and the memory used in both the given language i.e., Python and Java.
Below is the implementation of above idea :
C++
#include<bits/stdc++.h>
using
namespace
std;
int
calculate(
int
n,
int
power)
{
int
sum = 0;
int
bp = (
int
)
pow
(n, power);
while
(bp != 0) {
int
d = bp % 10;
sum += d;
bp /= 10;
}
return
sum;
}
int
main()
{
int
n = 5;
int
power = 4;
cout << calculate(n, power);
}
Java
public
class
base_power {
static
int
calculate(
int
n,
int
power)
{
int
sum =
0
;
int
bp = (
int
)Math.pow(n, power);
while
(bp !=
0
) {
int
d = bp %
10
;
sum += d;
bp /=
10
;
}
return
sum;
}
public
static
void
main(String[] args)
{
int
n =
5
;
int
power =
4
;
System.out.println(calculate(n, power));
}
}
Python3
def
calculate(n, power):
return
sum
([
int
(i)
for
i
in
str
(
pow
(n, power))])
n
=
5
power
=
4
print
(calculate(n, power))
C#
using
System;
public
class
base_power
{
static
int
calculate(
int
n,
int
power)
{
int
sum = 0;
int
bp = (
int
)Math.Pow(n, power);
while
(bp != 0)
{
int
d = bp % 10;
sum += d;
bp /= 10;
}
return
sum;
}
public
static
void
Main()
{
int
n = 5;
int
power = 4;
Console.WriteLine(calculate(n, power));
}
}
PHP
<?php
function
calculate(
$n
,
$power
)
{
$sum
= 0;
$bp
= (int)pow(
$n
,
$power
);
while
(
$bp
!= 0)
{
$d
=
$bp
% 10;
$sum
+=
$d
;
$bp
/= 10;
}
return
$sum
;
}
$n
= 5;
$power
= 4;
echo
(calculate(
$n
,
$power
));
?>
Javascript
<script>
function
calculate( n, power)
{
sum = 0;
bp = Math.pow(n, power);
while
(bp != 0) {
d = bp % 10;
sum =sum+ d;
bp = Math.floor(bp/ 10);
}
return
sum;
}
n = 5;
power = 4;
document.write(calculate(n, power));
</script>
Output:
13
This article is contributed by Chinmoy Lenka. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
олимпиада – Как найти сумму цифр суммы цифр
Да,вот такой не понятный заголовок) Теперь к делу, дано число 2015 в 1999 степени, необходимо посчитать сумму цифр этого числа, у полученной суммы цифр посчитать сумму цифр и так до тех пор, пока не получится однозначное число, и нужно узнать что за однозначное число получается. Единственное что я смог, это написать программу, но она не будет действовать на такое большое число, как решить задачу с математической точки зрения |
1 ответ
Hint. Если $%S(N)$% — это сумма цифр числа $%N$%, представленного в десятичной системе счисления, то $%S(N)=N mod 9$%. Например: $$S(2015^2)=S(4060225)= 19 = 1 = 2015^2 mod 9.$$ |
Здравствуйте
Математика – это совместно редактируемый форум вопросов и ответов для начинающих и опытных математиков, с особенным акцентом на компьютерные науки.
Присоединяйтесь!
отмечен:
олимпиада
×1,164
задан
4 Ноя ’15 12:50
показан
4267 раз
обновлен
4 Ноя ’15 13:36
Связанные вопросы
Отслеживать вопрос
по почте:
Зарегистрировавшись, вы сможете подписаться на любые обновления
по RSS:
Ответы
Ответы и Комментарии
М-да, сложного-то, вроде, нет, но что-то такие тяжеловесные рассуждения получаются, что самого оторопь берёт.
Для любого последовательность становится периодической по , начиная с какого-то номера , с периодом (ну это легко доказывается, по Дирихле она хоть один раз, да повторится, а дальше никуда не денется с подводной лодки). Значит, начиная с этого номера периодической будет и последовательность сумм последних цифр (возможно, с меньшим периодом).
Пусть максимальная сумма последних цифр в этом бесконечном периодическом хвосте
равна . Далее идём от противного. Если утверждение задачи неверно, то последовательность тем более ограничена сверху числом (которое достигается при некотором ). Поскольку, очевидно, не убывает при росте , то это значит, что для всех .
В свою очередь, отсюда следует, что для тех номеров , которые реализуют максимум суммы последних цифр в бесконечном периодическом хвосте
, десятичная запись содержит только нули в разрядах , , …, . Однако отсюда с необходимостью следует, что период для всех (один раз повторившись через членов, никуда последовательность уже не денется).
И вот тут в наши сети наконец попадается долгожданное противоречие. Ведь эти нули являются результатом переноса из нижних разрядов при последовательном сложении (надеюсь, все держат в памяти, что в последовательности каждый последующий член является суммой предыдущего с самим собой?). Взяв достаточно большое , мы можем добиться, чтобы членов было недостаточно, чтобы в результате переносов из этих разрядов во всех разрядах , , …, снова появились сплошные нули (для этого требуется по крайней мере один перенос из -го разряда, а в наших руках, в то время как период фиксирован).
mysteria-m 3 / 3 / 5 Регистрация: 26.12.2013 Сообщений: 197 |
||||
1 |
||||
14.10.2015, 15:49. Показов 2533. Ответов 6 Метки нет (Все метки)
Здравствуйте, помогите пожалуйста с заданием.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
14.10.2015, 15:49 |
6 |
7503 / 6378 / 2904 Регистрация: 14.04.2014 Сообщений: 27,745 |
|
14.10.2015, 15:54 |
2 |
Не следует использовать вещественные числа. Малейшая погрешность и у тебя не сойдётся результат.
0 |
3 / 3 / 5 Регистрация: 26.12.2013 Сообщений: 197 |
|
14.10.2015, 16:00 [ТС] |
3 |
спасибо за ответ, но результат все равно не правильный.. я так думаю проблема с циклом для степени (степень не задается изначально) может еще какой нибудь совет дадите?
0 |
zss Модератор 13084 / 10361 / 6201 Регистрация: 18.12.2011 Сообщений: 27,704 |
||||
14.10.2015, 16:10 |
4 |
|||
1 |
nmcf 7503 / 6378 / 2904 Регистрация: 14.04.2014 Сообщений: 27,745 |
||||
14.10.2015, 16:18 |
5 |
|||
Для 4151 результат верный.
1 |
3 / 3 / 5 Регистрация: 26.12.2013 Сообщений: 197 |
|
14.10.2015, 16:22 [ТС] |
6 |
zss, nmcf, Огромное спасибо!
0 |
Kerry_Jr 3105 / 2590 / 1219 Регистрация: 14.05.2014 Сообщений: 7,236 Записей в блоге: 1 |
||||
14.10.2015, 16:29 |
7 |
|||
mysteria-m, еще один вариантик
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
14.10.2015, 16:29 |
Помогаю со студенческими работами здесь Найти все натуральные числа, сумма цифр каждого из которых в некоторой степени равна самому числу Определить, равна ли сумма двух первых цифр заданного числа четырехзначного числа сумме двух его последних цифр Определить равна ли сумма двух первых цифр четырехзначного числа сумме его последних цифр Определить, равна ли сумма крайних цифр некоторого четырехзначного числа, сумме его средних цифр Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 7 |
Nelle987 подала хорошую мысль – посчитать остаток от деления на 9.
Далее все знаки = будут обозначать “имеет такой же остаток от деления на 9”
2018^2017 = 2^2017 = 2*2^2016 = 2 * (2^6) ^336 = 2*64^336 = 2*1^336 = 2
Эта сумма сумм цифр равняется 2.
Добавим, что это число называется цифровой корень.
Может ли эта 4-ая сумма сумм оказаться двузначной, и только 5-ая однозначной?
Допустим, это так. Оценим количество цифр в числе 2018^2017.
Для этого найдем его десятичный логарифм.
lg (2018^2017) = 2017*lg (2018) ≈ 2017*3,305 = 6666,185
Значит, в этом числе всего лишь 6667 цифр. Если даже там все 9, сумма цифр
не более чем 9*6667 = 60003.
Возьмем чуть меньшее число, 59999. Его сумма цифр (вторая) равна
5 + 4*9 = 5 + 36 = 41.
Значит, вторая сумма цифр не более 41. Пусть будет 39.
Тогда третья сумма равна 12, а 4-ая равна 3, то есть однозначная.
Вывод: 4-ая сумма цифр числа 2018^2017 – однозначное число.
Ответ: цифровой корень числа 2018^2017 равен 2.