For36. Даны целые положительные числа $$N$$ и $$K$$. Найти сумму $$1^K + 2^K + … + N^K$$. Чтобы избежать целочисленного переполнения, вычислять слагаемые этой суммы с помощью вещественной переменной и выводить результат как вещественное число.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
program For36; var N,K, i, i2 :Integer; Rez,Pow: Real; begin Write('Введите N: '); Readln(N); Write('Введите K: '); Readln(K); Rez:=0; for i:=1 to N do begin Pow:=1; for i2:=1 to K do Pow:=Pow*i; Rez:=Rez+Pow; end; Writeln(Rez); end. |
Другие задачи из раздела For можно посмотреть здесь.
Да! … я думал над этим вариантом. Но решил раз уже использую циклы, пусть уж будет в рамках арифметики 🙂
Задача относится к группе вложенные циклы, поэтому исходное решение, вероятно, более правильное, хоть и несколько сложнее.
Да, по этому я и не стал добавлять решения Кирилла в шапку. Но решение у него всё равно красивое. 🙂
___C++___
/*
For36◦. Даны целые положительные числа N и K. Найти сумму 1^K + 2^K + . . . + N^K. Чтобы избежать целочисленного переполнения,
вычислять слагаемые этой суммы с помощью вещественной переменной и выводить результат как вещественное число.
*/
void For_036()
{
while (true)
{
int N, K;
double sum = 0.0;
cout < 0 and K > 0 : N = «;
cin >> N;
cout <> K;
for (int i = 1; i <= N; i++)
{
int sum1 = i;
for (int j = 2; j <= K; j++)
{
sum1 = sum1 * i;
}
sum = sum + sum1;
}
cout << sum << endl;
}
}