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;
}