Advertisement
Virtual_Universe

Олимпиада: задача с мостом и копейками

Sep 22nd, 2015
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.54 KB | None | 0 0
  1. #работу выполнил Мамаев Александр
  2. minuskop = int(input())
  3. rub = int(input()) #введите здесь начальное кол рубли
  4. kop = int(input()) #Здесь введите начальное кол коп
  5. inprub = rub #сохраняем введёные двнные в ещё одну переменную, чтобы в дальнейшем можно было сного привести к ним
  6. inpkop = kop #аналагично
  7. x = 0 #доп перменная , помогает инвертировать рубли и копейки
  8. i = 0 #просто счетчик
  9. rub2 = 0 #доп переменная рублей в неё записывается максимальное число рублей
  10. kop2 = 0 #аналогично
  11. #Просчитываем все возможные варианты и находим максимальное число рублей
  12. for i in range(2000): #поставил максимальное число вариантов 2000  чтобы не нагружать компьютер
  13.     if rub>0:
  14.         #проводим вычитание копеек
  15.         if (kop-minuskop)>0:
  16.             kop -= minuskop
  17.             x = rub
  18.             rub = kop
  19.             kop = x
  20.         #аналогично но в данный случай употребляется когда копеек мало и мы вычитаем их из рублей
  21.         elif rub>1:
  22.             rub-=1
  23.             kop+=100
  24.             kop-=minuskop
  25.             x = rub
  26.             rub = kop
  27.             kop = x
  28.        #тот случай когда не возможно занять у рубля
  29.         else:
  30.             kop-=minuskop
  31.             x = rub
  32.             rub = kop
  33.             kop = x
  34.         #здесь мы записываем максимальное число рублей и копеек
  35.         if rub>rub2:
  36.             rub2=rub
  37.             kop2=kop
  38.         elif rub==rub2 and kop>kop2:
  39.             rub2=rub
  40.             kop2=kop
  41.            
  42. #НАХОЖДЕИЕ ЗАМОГО ВЫГОДНОГО ВАРИАНТ
  43. rub = inprub #приводим руболи и копейки к начальному состоянию
  44. kop = inpkop
  45. #запускаем новый цикл чтобы узнать при какой попытке у нас получится максимальноечисло денег
  46. for i in range(2000): #поставил максимальное число вариантов 2000  чтобы не нагружать компьютер
  47.     if rub!=rub2 and kop!=kop2: #проводим все операции с рублями до тех пор пока рубли и копейки в цикле не станут равны максимальным значением рублей и копеек
  48.         if rub>0:
  49.             if (kop-minuskop)>0:
  50.                 kop -= minuskop
  51.                 x = rub
  52.                 rub = kop
  53.                 kop = x
  54.             elif rub>1:
  55.                 rub-=1
  56.                 kop+=100
  57.                 kop-=minuskop
  58.                 x = rub
  59.                 rub = kop
  60.                 kop = x
  61.             else:
  62.                 kop-=minuskop
  63.                 x = rub
  64.                 rub = kop
  65.                 kop = x
  66.     else: #когда они становятся равны то
  67.         print(i) #пишем номер попытки
  68.         break #разрываем цикл
  69. #проверить работоспособность кода можно на http://pythontutor.ru/visualizer/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement