ВВЕРХ
ВНИЗ

Найти сумму степеней

На этой странице рассматриваются задачи For36 - For40 из задачника Абрамяна - одни из простейших задач, относящихся к вложенным циклам For с параметрами. В примерах For36-38 сумируем предварительно вычисленные степени натуральных чисел, в задачах For39-40 выводим целые числа с интервала.

For36. Даны целые положительные числа N и K. Найти сумму

1K + 2K + … + NK.

Чтобы избежать целочисленного переполнения, вычислять слагаемые этой суммы с помощью вещественной переменной и выводить результат как вещественное число.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
var
  k, N, i, j: word;
  Sum, a: real;

begin
  writeln('Введите целые положительные числа N и K:');
  write(' N = ');
  readln(N);
  write(' K = ');
  readln(K);
  Sum := 1; { <== Начальная сумма }
  for i := 2 to N do
  begin
    { Для временного хранения i^K используем 
    переменную a: }
    a := i; { <== 1-я степень числа a }
    { Далее вычисляем a^K: для этого умножаем 
    предыдущее значение a на i, в результате чего
    на j-м шагу получаем j-ю степень числа a: }
    for j := 2 to K do
      a := a * i; { <== j-я степень числа a }
    Sum := Sum + a { <== Увеличиваем сумму }
  end;
  writeln;
  writeln('Результат: ', Sum);
  readln
end.

For37. Дано целое число N (> 0). Найти сумму

11 + 22 + … + NN.

Чтобы избежать целочисленного переполнения, вычислять слагаемые этой суммы с помощью вещественной переменной и выводить результат как вещественное число.

Эта задача получается из предыдущей (For36), если поставить K = N. Больше ничего (кроме комментариев) менять не надо.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
var
  N, i, j: word;
  Sum, a: real;

begin
  writeln('Введите целое положительное число N:');
  write(' N = ');
  readln(N);
  Sum := 1; { <== Начальная сумма }
  for i := 2 to N do
  begin
    a := i; { <== 1-я степень числа i (j = 1) }
   { Далее для всех остальных показателей j (от 2 до N) 
   умножаем предыдущее значение a на i, в результате 
   чего на j-м шагу получаем j-ю степень числа a: }
    for j := 2 to N do
      a := a * i; { <== j-я степень числа i }
    Sum := Sum + a { <== Сумму увеличиваем на N-ю степень i }
  end;
  writeln;
  writeln('Результат: ', Sum);
  readln
end.

For38. Дано целое число N (> 0). Найти сумму

1N + 2N−1 + … + N1.

Чтобы избежать целочисленного переполнения, вычислять слагаемые этой суммы с помощью вещественной переменной и выводить результат как вещественное число.

Чтобы решить эту задачу, заметим, что сумма основания степени и показателя всегда равна N + 1:

1 + N = N + 1, 2 + (N - 1) = N + 1, ..., N + 1 = N + 1.

Таким образом, если основание равно i, то показатель будет равен N + 1 - i.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
var
  N, i, j: word;
  Sum, a: real;

begin
  writeln('Введите целое положительное число N:');
  write(' N = ');
  readln(N);
  Sum := 1; { <== Начальная сумма }
  for i := 2 to N do
  begin
    a := i; { <== 1-я степень числа i }
   { Далее для всех остальных показателей j (от 2 до N + 1 - i) 
   умножаем предыдущее значение a на i, в результате чего на j-м 
   шагу получаем j-ю степень числа i: }
    for j := 2 to N + 1 - i do
      a := a * i; { <== j-я степень числа i }
    Sum := Sum + a { <== Увеличиваем сумму } 
  end;
  writeln;
  writeln('Результат: ', Sum);
  readln
end.

Выводим все числа с интервала

For39. Даны целые положительные числа A и B (A < B). Вывести все целые числа от A до B включительно; при этом каждое число должно выводиться столько раз, каково его значение (например, число 3 выводится 3 раза).

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
var
  i, j, A, B: word;

begin
  write('A = ');
  readln(A);
  write('B = ');
  readln(B); 
  writeln;
  for i := A to B do { <-- для целого i от A до B }
    for j := 1 to i do { <-- i раз }
      write(' ', i) { <-- выводим число i }
  readln
end.

For40. Даны целые числа A и B (A < B). Вывести все целые числа от A до B включительно; при этом число A должно выводиться 1 раз, число A + 1 должно выводиться 2 раза и т. д.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
var
  i, j, A, B: integer;

begin
  writeln('Введите целые числа A и B (A < B):');
  write(' A = ');
  readln(A);
  write(' B = ');
  readln(B);
  writeln;
  for i := A to B do { <-- Для целого i от A до B }
    for j := 1 to i - A + 1 do { <-- (i - A + 1) раз }
      write(' ', i); { <-- выводим число i }
  readln
end.

Яндекс.Метрика