На праздник 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.
набросал что то, накажется набросал бред, может условие не так понял, буду благодарен за помощь
Федосеев Павел
14.01.2012 16:31
Если использовать перебор, то слишком короткое условие для проверки...
Я предлагаю другой подход. Пойдём с малениких 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/Наименьшее_общее_кратное" приводится два способа нахождения НОК. Можно выбрать первый - через НОД.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.