12.05.2011, 22:39 | #1 (permalink) |
Новичок
Регистрация: 12.05.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Задача на Паскале
Задача: сколько можно купить быков,коров, телят, платя за быка 10 руб.,за корову 5 руб., а за телёнка 0.5 руб, если на 100 рублей надо купить сто голов скота. её надо решить через цикл repeat!! |
12.05.2011, 22:39 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Возможно такое, что проблема уже решена в одной из аналогичных тем Задача на массивы в Паскале Задача на Паскале и С++ Задача на Паскале Задача на Паскале Задача на Паскале... |
12.05.2011, 23:29 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
1. Ox - искомое число быков, 2. Cow - искомое число коров, 3. Calf - искомое число телят. Имеем систему уравнений: 10*Ox+5*Cow+0.5*Calf=100 Ox+Cow+Calf=100 Чтобы работать исключительно с целыми числами, умножим обе части первого уравнения на 2: 20*Ox+10*Cow+Calf=200 Исключив телят, получим: Cow=(100-19*Ox)/9 Вот это Диофантово уравнение (это когда решениями являются только целые числа) и надо решить. Легко убедиться, что единственная подходящая комбинация есть Ox=1 и Cow=9. Отсюда получаем Calf=90. Эти три числа удовлетворяют обоим уравнениям системы. А теперь - программа, реализующая этот алгоритм: Код:
var Ox,Cow,Calf:Byte; b:boolean; BEGIN Ox:=0; b:=true; Repeat Repeat Inc(Ox); Until (((100-19*Ox) mod 9)=0) or (Ox=5); If ((100-19*Ox) mod 9)=0 then begin Cow:=(100-19*Ox) div 9; Calf:=100-(Ox+Cow); If (Ox*20+Cow*10+Calf)=200 then begin b:=false; Writeln(' Ox - ',Ox); Writeln(' Cow - ',Cow); Writeln('Calf - ',Calf); end; end; Until Ox=5; If b then WriteLn('The problem is unsolvable!'); readln; END. |
|
12.05.2011, 23:45 | #3 (permalink) |
Новичок
Регистрация: 12.05.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
спасибо большое ещё раз!!!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|