For 36. Даны целые положительные числа \(N\) и \(K\). Найти сумму
\(1^K + 2^K + ... + N^K\).
Чтобы избежать целочисленного переполнения, вычислять слагаемые этой суммы с помощью вещественной переменной и выводить результат как вещественное число.

Решение на Python 3

import random

N = random.randrange(1,11)
K = random.randrange(1,11)

print("N = ",N)
print("K = ",K)
print()

s = 0
for i in range(1,N+1):
p = 1.0
for j in range(1,K+1):
p *= i
s += p
print("i = ",i)
print("p = ",p)
print("s = ",s)
print()

print("Sum = ",s)

Решение на C++

#include <bits/stdc++.h>
using namespace std;

int main() {
srand((int)time(0));
int N = rand() % 20 + 2;
int K = rand() % 5 + 1;
//N = 150;

double s = 0, p;
for(int i = 1; i <= N; i++) {
p = 1.0;
for(int j = 1; j <= K; j++)
p *= i;
s += p;
cout << i << " : " << p << " : " << s << endl;
}
cout << "N = " << N << endl;
cout << "K = " << K << endl;
cout << "Sum = " << s << endl;

return 0;
}