Татьяна Ларина,читала очередной французский роман, подсчитала сумму номеров прочитанных страниц. Обозначим эту сумму 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
Аноним: Я что-то не понял? Страница 1 дает 1, страница 2 дает 1+2=3, 3 дает 1+2+3=6, 4 дает 1+2+3+4=10? 5 дает 1+2+3+4+5= 15, 6 дает 1+2+3+4+5+6=21. Почему же в примере 15 дает страницу 6?
Аноним: Или у Вас по принципу читаю страницу 6, когда прочитаю её, тогда добавлю 6 к сумме?
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

Аноним: Если что-то не читается, обновите страницу
Вас заинтересует