Предмет: Информатика, автор: Exoten

Татьяна Ларина,читала очередной французский роман, подсчитала сумму номеров прочитанных страниц. Обозначим эту сумму Q. Написать программу, определяющую номер страницы. (PascalABCNET)

Ответы

Автор ответа: petyaGavrikov
1
var q,i,s:integer;
begin
readln(q);
s:=0;
i:=0;
while s<q do
 begin
 i:=i+1;
 s:=s+i;
 end;
if s=q then writeln('Страница = ',i+1)
else writeln('Ошибка ввода');
end.

Пример:
5
Страница = 6

petyaGavrikov: В примере опечатка: вместо 5 должно быть 15
petyaGavrikov: Именно так. Если Татьяна читает страницу 6, то сумма прочитанных страниц = 1+2+3+4+5 = 15.
petyaGavrikov: Интерпретировать, действительно, можно по-разному. Мне захотелось именно так сделать. А что именно требуется в задаче - пусть автор вопроса решает.
Автор ответа: Аноним
0
Сумма страниц q = 1+2+3+4+...+n.
Это арифметическая прогрессия, формула суммы которой известна из математики.
\displaystyle S= \frac{2a_1+d(n-1)}{2}\cdot n; \quad a_1=d=1\to S= \frac{n(n+1)}{2} ; \\ \\
n^2+n-2S=0; \quad D=1+8S; \quad \sqrt D=\sqrt{1+8S} \\ \\
n= \frac{-1\pm \sqrt{1+8S}}{2}= \frac{\sqrt{1+8S}-1}{2}

// PascalABC.NET 3.3, сборка 1627 от 27.01.2018
// Внимание! Если программа не работает, обновите версию!

begin
  var q:=ReadInteger('q=');
  Writeln('n = ',(Sqrt(1+8*q)-1)/2:0)
end.

Пример
q= 55
n = 10
Похожие вопросы
Предмет: Математика, автор: hamoriadasha
Предмет: Литература, автор: musaevahava1411