Помощь - Поиск - Пользователи - Календарь
Полная версия: Мандарины. Остатки от делений.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Faradey
На праздник 8 марта ребята решили сделать подарки девушкам. Готовя подарки, они разложили в каждый подарок по открытке и по мягкой игрушке. А когда начали раскладывать мандарины, то возникло осложнение. Сначала они разложили мандарины по m штук в каждый пакет (в другие пакеты - яблоки), оказалось, что в одном из пакетов m - 1 мандарин, когда положили по m - 1 мандарин, осталось m - 2, попытались положить по m - 2 мандарин , осталось m - 3, и т.д., когда попытались положить по 2 мандарина, то остался 1 мандарин. Какую же количество мандарин закупили ребята?
program new;
uses crt;
var
m,n,i:integer;
begin
clrscr;
read(m);
for i:=1 to 1000 do begin
if (i mod m=m-1) and (i mod m-1=m-2) and ((i mod m-2)=m-3) and (i mod 2<>0) and (i>m) then begin
writeln(i); break; end;
end;

readkey;
end.


набросал что то, накажется набросал бред, может условие не так понял, буду благодарен за помощь
Федосеев Павел
Если использовать перебор, то слишком короткое условие для проверки...

Я предлагаю другой подход.
Пойдём с малениких m.

m=3
Разложили по 2 - остаток 1.
Разложили по 3 - остаток 2.
Чему равно n?
Правильно - n=(НОК(2, 3)-1)=6-1=5.

m=4
n:=(НОК(2, 3, 4)-1)=12-1=11.

и т.д.

НОК - наименьшее общее кратное

Т.е. для нахождения n нужно найти НОК(1, 2, ..., m).

В статье по ссылке "ru.wikipedia.org/wiki/Наименьшее_общее_кратное" приводится два способа нахождения НОК. Можно выбрать первый - через НОД.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.