For38. Дано целое число N (> 0). Найти сумму 1N + 2N-1 + … + N1. Чтобы избежать целочисленного переполнения, вычислять слагаемые этой суммы с помощью вещественной переменной и выводить результат как вещественное число.
>Решение Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | program For38; var N, i, i2 :Integer; Rez,Pow: Real; begin Write('Введите N: '); Readln(N); Rez:=0; for i:=1 to N do begin Pow:=1; for i2:=1 to N-i+1 do Pow:=Pow*i; Rez:=Rez+Pow; end; Writeln(Rez); end. |
>
Решение C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include int main(void) { int n; printf("N:"); scanf ("%i", &n); int i,i2; float rez=0,ni; for (i =1; i<=n; ++i){ ni=i; for (i2=1; i2<=n-i; ++i2) ni *=i; rez +=ni; } printf("%f\n",rez); return 0; } |
Решение C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "Russian"); int n; cout<<"N:"; cin>>n; int i, i2; float rez = 0, ni; for (i = 1; i <= n; ++i) { ni = i; for (i2 = 1; i2 <= n - i; ++i2) ni *= i; rez += ni; } cout<<rez; return 0; } |
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include
int main(void)
{
int n;
printf(«N:»);
scanf («%i», &n);
int i,i2;
float rez=0,ni;
for (i =1; i<=n; ++i){
ni=1;
for (i2=1; i2<=n-i; ++i2) ni *=i;
rez +=ni;
}
printf("%f\n",rez);
return 0;
}
вот это более правильное
int main()
{
float n, power = 1, sum = 0, m, k = 1;
cin >> n;
for (int i = 1; i = i; j—)
{
power *= k;
}
m—;
sum += power;
k++;
power = 1;
}
cout << sum;
}
python?
double a=0,b;
b = int.Parse(Console.ReadLine());
for (int i = 1; i <=b; i++)
{
a += Math.Pow(i, b — i+1);
Console.WriteLine(a);
}
самое эффективное решение
А как же вложенный цикл? 🙂