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

// 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
Это арифметическая прогрессия, формула суммы которой известна из математики.
// 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
Если что-то не читается, обновите страницу
Вас заинтересует
2 года назад
3 года назад
3 года назад