Показать сообщение отдельно
Старый 26.06.2013, 14:34   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Так, в предыдущем решении - наврал. Считал, что 7 - это стоимость чистого напитка, без тары. А так действительно получается 83. Исправил.

Рассуждал я так.
Обозначим количество приобретенных бутылок в понедельник, вторник и т.д. до пятницы как m1, m2, m3, m4, m5. Полученную сдачу - как s1, s2, s3, s4, s5. По условию задачи m5=1 и s5=0. Теперь посмотрим на ситуацию в четверг. Пятничное приобретение единственной бутылки было сделано за счет сдачи s4 и продажи тары m4*3, откуда имеем
7 = m4*3 + s4, откуда m4 = (7 - s4)/3.
Казалось бы, не зная s4, найти m4 невозможно, но:
1. это диофантово уравнение, т.е. ответ (m4) должен быть целым числом.
2. мы интересуемся минимальной стартовой суммой, а значит и на каждом этапе из всех возможных количеств бутылок мы должны взять минимальное.
Практически это означает, что, стартуя с s4=6, мы должны уменьшать это s4 до тех пор, пока не получим целого m4.
Далее то же самое проделываем для m3, s3, потом для m2, s2 и, наконец, для m1, s1. Ответом будет
m1*7 + s1.

Программа:
Код:
Const
 n=7;
 k=3;
Var
 s,s1,i:byte;
 m:word;
Begin
 m:=1;
 s1:=0;
 For i:=1 to 4 do
  begin
   s:=7;
   repeat
    Dec(s);
   until Frac((m*n+s1-s)/k)=0;
   m:=Round((m*n+s1-s)/k);
   s1:=s;
  end;
 Writeln(m*n+s);
 Readln
End.
Vladimir_S вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070