Использование формул арифметической прогрессии для решения задач по информатике

8. Арифметическая прогрессия

1. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

 

var k, s: integer;

begin

    s:=0;

    k:=1;

    while s < 66 do begin

        k:=k+3;

        s:=s+k;

    end;

    write(k);

end.

Решение.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s < 66, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

 

Зна­че­ние s есть сумма пер­вых n чле­нов ариф­ме­ти­че­ской про­грес­сии. http://reshuege.ru/formula/30/30a842146012ad923adfcb6cfee292ed.pnghttp://reshuege.ru/formula/92/92eb5ffee6ae2fec3ad71c777531578f.png — сумма пер­вых n чле­нов про­грес­сии, http://reshuege.ru/formula/82/8277e0910d750195b448797616e091ad.png — раз­ность про­грес­сии, http://reshuege.ru/formula/7b/7b8b965ad4bca0e41ab51de7b31363a1.png — ко­ли­че­ство чле­нов.

 

Цикл пре­рвет­ся, когда http://reshuege.ru/formula/26/2662c5b31ce000ea275340177e5e027a.png.

 

Най­дем http://reshuege.ru/formula/7b/7b8b965ad4bca0e41ab51de7b31363a1.pnghttp://reshuege.ru/formula/ce/ce1666cede5c9c4220073a0a2126e8be.pnghttp://reshuege.ru/formula/4b/4b69120ecab024b62c8b5b4be0f116a9.pnghttp://reshuege.ru/formula/b5/b558ea8ccf34dd8a099a5f6bd47872a0.png (т. к. k:=k+3). Чтобы ре­шить это не­ра­вен­ство, нам не­об­хо­ди­мо ре­шить квад­рат­ное урав­не­ние http://reshuege.ru/formula/b0/b028c2e1c91c1f169d6aea860c5d39be.png, среди его кор­ней нас ин­те­ре­су­ют толь­ко по­ло­жи­тель­ные, сле­до­ва­тель­но, http://reshuege.ru/formula/3a/3aad78095d85748efaf5af18b3bc053b.png

 

Вос­поль­зо­вав­шись ме­то­дом ин­тер­ва­лов, на­хо­дим, что пер­вое на­ту­раль­ное n, при ко­то­ром на­ру­ша­ет­ся усло­вие, есть http://reshuege.ru/formula/da/da0eb2c60efbf3858606dce65755179f.png.

 

Под­ста­вив из­вест­ные па­ра­мет­ры в http://reshuege.ru/formula/c0/c04c8dad2d5d3d32cef2ec5a526950ea.png по­лу­ча­ем, что http://reshuege.ru/formula/70/70a89ba46805c761ecaa18783638a32e.png

 

2. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

 

var k, s: integer;

begin

    s:=0;

    k:=0;

    while k < 30 do begin

        k:=k+3;

        s:=s+k;

    end;

    write(s);

end.

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие k < 30, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

 

Так как по­сле­до­ва­тель­ность k пред­став­ля­ет собой ариф­ме­ти­че­скую про­грес­сию, най­дем n из не­ра­вен­ства:

 

http://reshuege.ru/formula/79/79a8cbfbb0142a1eb3430f9e5cd38e20.png http://reshuege.ru/formula/c1/c14da924290d9afecd33bcf74f04a354.png http://reshuege.ru/formula/b5/b558ea8ccf34dd8a099a5f6bd47872a0.png (т. к. k:=k+3). Вос­поль­зо­вав­шись ме­то­дом ин­тер­ва­лов, на­хо­дим пер­вое на­ту­раль­ное n, при ко­то­ром на­ру­ша­ет­ся усло­вие: http://reshuege.ru/formula/0e/0eed7908cf503924570c3a1956ef3c2b.png

Зна­че­ние s есть сумма пер­вых n чле­нов ариф­ме­ти­че­ской про­грес­сии. http://reshuege.ru/formula/cd/cdd9d7356e1ec4f39d0f81cfe8109c45.png http://reshuege.ru/formula/92/92eb5ffee6ae2fec3ad71c777531578f.png — сумма пер­вых n чле­нов про­грес­сии, http://reshuege.ru/formula/82/8277e0910d750195b448797616e091ad.png — раз­ность про­грес­сии, http://reshuege.ru/formula/7b/7b8b965ad4bca0e41ab51de7b31363a1.png — ко­ли­че­ство чле­нов.

 

http://reshuege.ru/formula/b8/b8f09bf033ec70d07c1f99b846cb2ca1.png

 

3. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

 

var k, s: integer;

begin

    s:=1;

    k:=0;

    while k < 13 do begin

        s:=s+2*k;

        k:=k+4;

    end;

    write(s+k);

end.

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие k < 13, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

 

Так как числа не­боль­шие, можно ак­ку­рат­но вы­пи­сать все s и k:

 

s 1 1 9 25 49

k 0 4 8 12 16

 

(Пом­ни­те, что усло­вие k < 13 про­ве­ря­ет­ся сразу после k:=k+4, сле­до­ва­тель­но, дей­ствие s:=s+2*k для k=16 вы­пол­нять­ся не будет)

 

Сле­до­ва­тель­но, ответ 49+16=65.

 

4. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

 

var n, s: integer;

begin

    n := 1;

    s := 0;

    while n <= 101 do begin

        s := s + 7;

        n := n + 1

    end;

    write(s)

end.

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие n <= 101, т. е. пе­ре­мен­ная n опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл. Сле­до­ва­тель­но, фор­муль­но s можно за­дать как функ­цию n так:

 

http://reshuege.ru/formula/00/005763b0948fe35876c8cf642a49110a.png, где http://reshuege.ru/formula/10/10b3b0707185c9b1bc0a18e704c34031.png а http://reshuege.ru/formula/18/18e30ec9a448607f75a2b104c54cb40d.png

 

http://reshuege.ru/formula/47/4779c9f0268d0d87d9fd53c0487b3b4f.png, так как по­след­няя опе­ра­ция, вы­пол­нен­ная в цикле: n := 101 + 1.

 

Сле­до­ва­тель­но http://reshuege.ru/formula/67/674b41141fef9564acd1cfaf5ca8d944.png

 

5. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

 

var n, s: integer;

begin

    n := 24;

    s := 0;

    while n <= 28 do begin

        s := s + 20;

        n := n + 2

    end;

    write(s)

end.

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие n <= 28, т. е. пе­ре­мен­ная n опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

 

Ак­ку­рат­но по­счи­та­ем, сколь­ко раз вы­пол­нить­ся цикл (k):

 

Зна­че­ния n: 24 26 28 30.

 

Сле­до­ва­тель­но, цикл вы­пол­нит­ся три раза (так как дей­ствие n := n + 2 стоит в конце цикла, сле­до­ва­тель­но, для n=30 дей­ствие s := s + 20 не будет вы­пол­нять­ся).

 

По­счи­та­ем зна­че­ние s: http://reshuege.ru/formula/f7/f7153c397debbb5fd7ca2b1aff60ccd2.png.

 

6. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы (за­пи­сан­ной ниже на раз­ных язы­ках про­грам­ми­ро­ва­ния):

 

Бэй­сик

Пас­каль

DIM N, S AS INTEGER

N = 3

S = 0

WHILE N <= 7

S = S + N

N = N + 1

WEND

PRINT S

var n, s: integer;

begin

n := 3;

s := 0;

while n <= 7 do

begin

s := s + n;

n := n + 1

end;

write(s)

end.

Си

Ал­го­рит­ми­че­ский

#include

void main()

{

int n, s;

n = 3;

s = 0;

while (n <= 7)

{

s = s + n;

n = n + 1;

}

printf("%d", s);

}

алг

нач

цел n, s

n := 3

s := 0

нц пока n <= 7

s := s + n

n := n + 1

кц

вывод s

кон

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие n <= 7, т. е. пе­ре­мен­ная n опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

 

Цикл вы­пол­нит­ся http://reshuege.ru/formula/38/38bf681b188ab3c67903a0922dc7f553.png раз ( "+1" по­то­му, что в дроби мы не учи­ты­ва­ем то, что при 7 он тоже вы­пол­нит­ся).

 

За­ме­тим, что в s на­кап­ли­ва­ет­ся сумма ариф­ме­ти­че­ской про­грес­сии из 5 чле­нов с раз­но­стью 1. Сле­до­ва­тель­но,http://reshuege.ru/formula/5c/5c4eabf7fe9e0d05b1d4d53fa5a8ad9a.png.

 

7. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы (за­пи­сан­ной ниже на раз­ных язы­ках про­грам­ми­ро­ва­ния):

 

Бэй­сик

Пас­каль

Dim s, k As Integer

s = 0

k = 1

While k < 11

s = s + k

k = k + 1

End While

Console.Write(s)

Var s, k : integer;

BEGIN

s:=0;

k:=1;

while k<11 do

begin

s:=s+k;

k:=k+1;

end;

write(s);

END.

Си

Ал­го­рит­ми­че­ский

{

int s, k;

s = 0;

k = 1;

while (k<11) {

s = s+k;

k = k+1;

}

printf("%d", s);

}

нач

цел s, k

s:=0

k:=1

нц пока k < 11

s:=s+k; k:=k+1

кц

вывод s

кон

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие k < 11, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

 

Цикл вы­пол­нит­ся http://reshuege.ru/formula/0d/0d8d5c85554aa981e99b493e9791e91d.png раз. За­ме­тим, что в s на­кап­ли­ва­ет­ся сумма ариф­ме­ти­че­ской про­грес­сии, со­дер­жа­щей 11 чле­нов, с раз­но­стью 1. Сле­до­ва­тель­но, http://reshuege.ru/formula/4b/4bdb51450b65c2dc4cf96fac4c54816b.png.

 

8. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы 
(за­пи­сан­ной ниже на раз­ных язы­ках про­грам­ми­ро­ва­ния):

Бей­сик

Пас­каль

DIM N, S AS INTEGER

N = 0

S = 512

WHILE S  >= 0

  S = S - 20

  N = N + 1

WEND

PRINT  N

var n, s: integer;

begin

  n := 0;

  s := 512;

  while s >= 0 do

  begin

    s := s - 20;

    n := n + 1

  end;

  write(n)

end.

Си

Ал­го­рит­ми­че­ский

#include<stdio.h>

void main()

{

  int n, s;

  n = 0;

  s = 512;

  while (s >= 0)

  {

    s = s - 20;

    n = n + 1;

  }

  printf("%d", n);

}

алг

нач

  цел n, s

  n := 0

  s := 512

  нцпока s >= 0

    s := s - 20

    n := n + 1

  кц

  вывод n

кон

 

Начало формы

 

Реше­ние.

В пе­ре­мен­ной n за­пи­сы­ва­ет­ся сколь­ко раз про­изо­шел цикл. Сле­до­ва­тель­но,

http://reshuege.ru/formula/8f/8f0618f1af6a146a3e0c29abf6db291d.png

Тот факт, что при n = 25, s будет > 0 озна­ча­ет, что у=цикл вы­пол­нить­ся 26 раз.

Конец формы

 

Краткое описание материала

Пример: При решение задач на циклы нужны формулы математики.

Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

 var k, s: integer;

begin

    s:=0;

    k:=1;

    while s < 66 do begin

        k:=k+3;

        s:=s+k;

    end;

    write(k);

end.

Решение.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s < 66, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

 Для решения задачи используем формулы арифметической прогрессии.

Ответ: 19.

 

Использование формул арифметической прогрессии для решения задач по информатике

    DOCX

Файл будет скачан в формате:

    DOCX

Автор материала

Хакимзянова Нурания Идерисовна

учитель математики и информатики

  • На сайте: 10 лет и 7 месяцев
  • Всего просмотров: 139444
  • Подписчики: 4
  • Всего материалов: 22
  • 139444
    просмотров
  • 22
    материалов
  • 4
    подписчиков

Настоящий материал опубликован пользователем Хакимзянова Нурания Идерисовна.
Инфоурок является информационным посредником. Всю ответственность за опубликованные материалы несут пользователи, загрузившие материал на сайт. Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

Другие материалы

Вам будут интересны эти курсы: