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

Решение на Python 3

import random

N = random.randrange(1,11)

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

s = 0
for i in range(1,N+1):
p = 1.0
for j in range(1,i+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;
//N = 150;

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

return 0;
}