765
Задача 40: Линийка
Върху линийка с дължина 100000 см. са нанесени деления през 1см. Деленията на линийката са номерирани с поредни числа, като в началото и е записано числото 0. Талантливчо поставил върху линийката три летвички, които изработил в часовете по труд и техника. Всяка летвичка поставял на произволно деление и записвал края и дължината й. Да се напише програма RULER, която извежда началото на тази летвичка, което се намира най-близко до началото на линийката..
Вход
На първите три реда от стандартния вход се въвеждат по две цели числа, разделени с интервал – дължината и края на всяка от летвичките..
Изход
Програмата да изведе цяло число, което показва началото на летвичката, която се намира най-близко до началото на линийката.
Ограничения
Въведените числа са не по-големи от 100000 и не по-малки от 1.
Вход
3 9
8 12
6 15
Изход
3
Задача 41: Ръст
Представете си, че сте голям баскетболен запалянко и освен това запален компютърен програмист. За да съчетаете двете си любими занимания (гледане на баскетболни мачове и програмиране), сте решили да направите програма, с която за всеки мач да определяте най-високия играч от стартовата петорка на отбора, на който сте привърженик. И така, направете програма RAST, която на вход от клавиатура получава номера (число от 1 до 100) и ръста в сантиметри (цяло число) на всеки един от играчите от стартовата петорка и на екрана извежда номера и ръста на най-високия. Стартовата петорка винаги е такава, че няма двама най-високи играчи с един и същи ръст.
Вход
5 201
7 192
12 208
14 196
21 202
Изход
12 208
Задача 42: Конкурс
Три манекенки – A, B и C явяват на конкурс за красота и се оценяват по два критерия. Да се напише програма MAN, която определя, коя от манекенките е спечелила първо място по следния начин: първо се събират точките по двата критерия. Манекенката с най-голям сбор се класира на първо място. Ако се получи така, че някои от манекенките са с равен брой точки, по-напред се класира тази, която има повече точки по първият критерий. Ако отново имат равен брой точки, първа се класира тази, която е излязла по-напред да дефилира (подредбата на манекенките е: А,B,C)
От клавиатурата се въвеждат три двойки цели числа (не по-големи от 1000). Първата двойка числа са оценките съответно по първия и втория критерий на първата манекенка. Втората двойка числа са оценките съответно по първия и втория критерий на втората манекенка. Аналогично за третата манекенка.
На екрана се извежда една от буквите А, B или C, в зависимост от това коя манекенка е класирана на първо място, като буквата А отговаря на първата манекенка, буквата B на втората манекенка и буквата C на третата манекенка.
Вход Изход Вход Изход
5 6 B 9 6 B
7 4 13 2
5 3 13 2
Задача 43: Плочки
Даден е правоъгълен мраморен блок с размери: a, b и с, не по-големи от 1000. Той трябва да бъде нарязан на плочки с дебелина 3 см., но такива, че лицето на една плочка да е възможно най-голямо. Съставете програма PLOCHKA, която прочита от клавиатурата трите числа a, b и с и отпечатва броя на плочките, които могат да се изрежат при поставеното условие. Да се има предвид, че ако се получи плочка с дебелина по-малка от 3, тя не се включва в търсеният брой.
Вход
8 9 7
Изход
2
Обяснение:
Най-голямо лице има тази част от блока, която е с размери 8 и 9. Затова Блокът ще бъде нарязан на плочки по третата си страна. Тъй като тя е 7, от нея магат да се изрежат 2 плочки с дебелина 3 и 1 с дебелина 1. Последната не се брои, затова резултатът е 2.
Задача 44: Тухла
Тухла с правилна правоъгълна форма има дължина x, ширина y и височина z см. Тези размери са цели числа и не са по-големи от 1000 см. Напишете програма BRICK, която въвежда числата x, y и z чрез клавиатурата и извежда на екрана едно число, равно на минималната площ в кв. см, която трябва да се изреже от ламаринен лист така, че през получената дупка да може да се провре тухлата.
Вход
1 1 1
Изход
1
Задача 45: Тениски
О рганизаторите на Есенния турнир по програмиране решили да поръчат тениски за участниците. След като всички тениски били ушити, се оказало, че останало правоъгълно парче плат с ширина a и дължина b. Тогава дизайнерите решили да разкрасят тениските като им добавят джобчета с размери x и y. За да изглеждат добре, трябвало или всички джобчета да се изрежат по дължината на плата, или всички да са по ширината – не се позволявало комбинирано изрязване.(вижте картинката)
Дизайнерите забелязали (както, предполагам и вие), че в двата случая се получават различен брой джобове. Те се интересуват какъв е най-големия брой джобове, който може да се получи при дадени размери на парчето плат и размерите на на един джоб и им е необходима програма T-SHIRT, която да прави това.
Вход
На първия ред на стандартния вход се въвеждат четири числа a,b,x и y – размерите на парчето плат и размерите на един джоб.
Изход
Програмата извежда на първия ред на стандартния изход едно цяло число – максималния брой джобове, а на втория площта на останалото парче плат.
Ограничения
1<=a,b<=500
1<=x,y<=100
Вход Изход
6 8 2 3 8 0
Вход Изход
6 7 3 5 2 12
Задача 46: Спестовник
Майката на Гошко го изпратила да купи носни кърпички от близкия супермаркет. Разглеждайки цените на различните опаковки Гошко установил следното: един пакет носни кърпички струва 12 ст. един стек (8 пакета) - 82 ст.,а една кутия (40 стека)-30.5 лв. Гошко трябвало да купи N пакета и забелязал, че по-големите опаковки са по-изгодни. Той се замислил как да направи най-изгодната покупка. Напишете програма saver, която намира най-евтиния начин за закупуване на даден брой пакети носни кърпички.
Вход
На входа се въвежда естествено число N(0<N<1000000) за броя пакети носни кърпи.
Изход
На изхода се извеждат 3 неотрицателни числа разделени с по един интервал показващи съответно- брой кутии брой стекове, брой пакети.
Вход Изход
14 0 1 6
Вход Изход
310 1 0 0
Задача 47: Най-голямо число
Да се напише програма naigoliamo, която въвежда от клавиатурата 5 естествени числа (написани на един ред) и извежда на екрана най-голямото число, което може да се получи чрез написване на тези числа едно след друго в някаква последователност.
Вход Вход
13 25 9 10 90 11111 2222 333 44 5
Изход Изход
990251310 544333222211111
Задача 48: Стадион
Гошко, Пенчо и Чочо обичат да посещават училищния стадион, където могат да тренират различни спортове. Всеки ден учителят по физкултура записва часът и минутата на пристигане и тръгване на всеки ученик. Един ден тримата приятели започнали да спорят колко е максималното време, прекарано на стадиона от някой от тях. За да разрешат спора, те помолили учителя по физическо за неговите записки. В крайна сметка те получили три поредни четворки от числа:
На първия ред били записани часът и минутите на пристигане часът и минутите на тръгване на Гошко, на втория ред били записани часът и минутите на пристигане часът и минутите на тръгване на Пенчо, а на третия ред били записани часът и минутите на пристигане часът и минутите на тръгване на Чочо. Нашите приятели били отлични спортисти, но много лоши математици. Налага се да им помогнем в спора, като напишем програма STADION, която определя колко минути е най-продължителното пребиваване на някой от тях на стадиона.
Вход
На три последователни реда от стандартния вход се въвеждат по четири цели числа – времената на пристигане и заминаване на всеки, по начина, описан по-горе. Времената са в рамките на едно денонощие.
Изход
Програмата извежда на единствения ред на стандартния изход едно цяло число – максималния брой минути, прекарани от някой от приятелите на стадиона.
Вход
10 0 11 0
9 30 12 0
17 15 17 50
Изход
150
Задача 49: Максимално число
Да се състави програма MAX, която въвежда от клавиатурата числа до въвеждане на 0 и извежда на екрана най-голямото от тях.
Вход
1 2 3 4 5 3 2 5 0
Изход
5
Задача 50: Максимално отрицателно число
Напишете програма MAXNEG, която въвежда от клавиатурата цели числа, до срещане на числото 0 (нула) и извежда на екрана максималното отрицателно число. Ако в последователността не е въведен нито един отрицателен елемент се извежда 0.
Вход
1 -3 7 -2 -6 0
Изход
-2
Решение:
Когато се определя оптимален елемент, първата стъпка е да определим един от всички елементи, който отговаря на останалите условия и е евентуален кандидат за оптимален. След това го сравняваме с всички останали и ако намерим такъв, който го превъзхожда – го заместваме.
Ще определим величините, които участват в програмата:
-
Необходими са ни две целочислени променливи: едната – int a;, за да записваме в нея текущо въведеното число и друга – за максималното отрицателно число int mn;
-
Както вече споменахме първо трябва да открием първото отрицателно число от поредицата и да го обявим за максимално. Да обърнем внимание и на това, че във въвежданата последователност може и да няма отрицателни елементи. Ето защо трябва да предвидим и варианта да се въведе 0, без да е въведен нито един отрицателен елемент и тогава трябва да отпечатаме 0. Намирането на първия отрицателен елемент ще се реализира с цикъл, в който числата ще се четат от клавиатурата докато бъде въведено отрицателно число или 0.
do cin>>a while(a>0);
-
След като цикълът завърши, се налага да проверим причината за спирането му. Това може да бъде въвеждане на 0, което означава извеждане на 0 и край на програмата. В случай, че е въведено отрицателно число означава, че то трябва да бъде обявено за максимално и въвеждането да продължи, до въвеждане на 0, като при това всяко число се проверява дали е отрицателно и дали е по-голямо от определения вече максимален елемент. Ако се открие такова число, то се обявява за максимален елемент. Това се реализира по следния начин:
if(!a)cout<<0<
else
{
mn=a;
do
{
cin>>a;
if(a<0&&a>mn)mn=a;
}
while(a);
cout<
}
Последният оператор извежда на екрана максималното отрицателно число.
Сега можем да напишем текста на програмата:
//maxneg.cpp
#include
void main()
{
int a,mn=0;
do cin>>а while(a>0);
if(!a)cout<<0<
else
{
mn=a;
do
{
cin>>a;
if(a<0&&a>mn)mn=a;
}
while(a);
cout<
}
}
Задача 51: Състезание3
В състезание по вдигане на тежести при равни резултати на по-предно място се класира по-лекия състезател. Да се състави програма COMPЕТ3, която прочита от клавиатурата цяло число n<=50 и резултатите и теглата (които могат да бъдат и дробни числа) на n състезатели и извежда на екрана номера на златния медалист.
Вход
5
150 70
130 65
150 69
120 80
145 100
Изход
3
Решение:
В тази задача ще трябва да определим оптимален елемент по два признака, като първият е водещ, но при равенство – оптималността се решава в полза на този с по-добър втори признак (в случая – с по-малко тегло). Ето защо за златния медалист трябва да съхраним не само номера, но и резултата и теглото му.
-
Необходими са ни две целочислени променливи: едната – int n;, за броя на състезателите и друга – за номера на златния медалист – int mn. Освен това, ще са необходими по две променливи за постижението и теглото на състезателя, чиито данни въвеждаме в момента – float p,t; както и за постижението и теглото на златния медалист – float mp,mt;.
-
Тук за определяне на първоначалната стойност на оптималния елемент, ще използваме факта, че в най-лошия случай резултата на един състезател е 0 и ще приемем този резултат за максимален. Естествено е да очакваме, че при въвеждане на данните за всички състезатели ще се въведе поне едно постижение, различно от 0 и то ще замести приетото за оптимално нулево постижение. Така, че преди да продължим с въвеждане на данните за броя и постиженията на състезателите, ще направим следната инициализация на променливите, характеризиращи златния медалист:
mp=mt=mn=0;
-
Въвеждаме броя на състезателите:
cin>>n;
-
Сега трябва да въведем последователно постиженията и теглата на всичките n състезатели, като сравним постижението на всеки от тях с най-доброто до момента и ако е по-добро, да запомним в променливите mn, mt и mp параметрите на този състезател; ако постижението е равно на най-доброто, ще се наложи да сравним теглата на най-добрия и текущия състезател и ако текущия е по-лек, той ще стане най-добър. Във всички останали случаи промени не са необходими. За n-кратното повторение на тези действия ще използваме цикъл for, управляващата променлива, на който ще съдържа във всеки момент номера на текущия състезател:
for(int i=1;i<=n;i++)
{
cin>>p>>t;
if((p>mp)||(p==mp&&t
{
mp=p; mt=t; mn=i;
}
}
-
Накрая извеждаме номера на златния медалист:
cout<Ето окончателния вид на програмата:
//comp.cpp
#include
void main()
{
int n, mn; float p,t,mp,mt ;
mp=mt=mn=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>p>>t;
if((p>mp)||(p==mp&&t
{
mp=p; mt=t;mn=i;
}
}
cout<
}
Задача 52: Автомобилно състезание
Ежегодно в с. Победа се провежда автомобилно състезание. Участниците напълват резервоарите на колите и победител е този, който успее да измине най-дълго разстояние без да налива повече гориво. Като при всяко състезание и тук имало залагания кой ще бъде победител.
Хитран успял да се сдобие с информация за това, колко бензин изразходва за една обиколка на пистата всяка от колите При старта той записвал обема на резервоара и количеството бензин, което колата изразходва за изминаването на една обиколка. Тъй като броят на колите не е известен предварително, накрая Хитран записва две нули. Как Хитран да разбере на кого да заложи?
Напишете програма АUTO, която отпечатва номера на победителя по реда на стартирането и неговото постижение. Номерирането на колите започва от едно и се отчитат само завършените обиколки.
Вход
От клавиатурата последователно се въвеждат по две числа на ред – обема на резервоара и необходимото количество бензин за една обиколка. Числата са отделени с един интервал. На последния ред се въвеждат две нули.
Изход
Програмата извежда на екрана две числа – първото е стартовия номер на колата победител в състезанието, а второто достигнатото от нея разстояние. Ако има две коли с еднакво постижение победител е тази, която има по-малък номер.
Вход Изход
60 4 3 24
80 5
96 4
0 0
Задача 53: Две отрицателни числа
Да се състави програма TWONEG, която чете от клавиатурата последователност от числа, докато не се въведат две отрицателни, и отпечатва минималното от всички въведени числа, с последна цифра 5.
Вход
10
-2
45
15
1
-3
Изход
15
Задача 54: К числа
Да се състави програма KNUMBERS, която прочита от клавиатурата цяло число К и след него последователност от числа докато броят им стане равен на К и отпечатва най-голямото от въведените числа, кратни на 5.
Вход
10
2
13
-6
-25
9
6
20
4
5
1
Изход
20
Задача 55: Триъгълник
Да се състави програма PTHREE, която чете от клавиатурата последователност от тройки реални числа до въвеждане на такава тройка, елементите на която не могат да бъдат страни на триъгълник и отпечатва номера на триъгълника с най-голям периметър.
Вход
10 4 7
2 3 4
40 45 38
5 5 5
7 7 7
8 8 9
9 8 9
1 9 2
Изход
3
Задача 56: Растяща редица
Да се състави програма SEC, която чете от клавиатурата редици от числа от по пет елемента, до въвеждане на строго растяща редица, и отпечатва на екрана най-голямата сума от елементи на редица.
Вход
10 4 7 3 6
2 3 4 58 6
40 45 38 33
5 5 5 2 3
70 70 70 70 70
3 4 5 6 7
Изход
350
Задача 57: Мартеници
На Петьо много му се иска да купи еднакви мартенички на своите приятелчета. Той има определена сума S, а цените на мартеничките са най-различни. Петьо решил да избере най-скъпите мартенички, които може да си позволи за парите, с които разполага. Помогнете му. Напишете програма MART, която да определи от кои мартенички да купи.
На първия ред на стандартния вход ще бъде зададено дробното число S – парите, с които разполага Петьо. На втория ред ще бъдат зададени 2 цели числа – броят M на приятелчетата на Петьо и броят N на различните мартеници. От всеки от следващите N реда се въвежда по едно дробно число C – цена на мартеничка.
На стандартния изход да се изведе избраната цена на мартеничка или NO, ако не е възможно Петьо да купи необходимия му брой мартенички.
Вход Вход
4.39 2.39
4 3 4 3
0.75 0.75
0.60 0.60
1.20 1.20
Изход Изход
0.75 No
Задача 58: Последователност от равни числа
От клавиатурата се въвеждат последователно няколко цели положителни числа, след което се въвежда числото нула. Да се напише програма RAVNI, която да намери и изведе на екрана броят на числата в най-дългата поредица от последователни равни числа.
Вход
5
5
6
6
6
8
0
Изход
3
Задача 59: Максимален правоъгълник
Напишете програма MAXRECT, която намира най-голямото от лицата на няколко правоъгълника.
Данните се въвеждат от стандартния вход. На първия ред е записан броя на правоъгълниците n (1
На стандартния изход да се изведе търсеното максимално лице.
Вход
4
3 2
6 2
5 1
4 3
Изход
1
Задача 60: Синоптици
При правене на прогнозите за времето, синоптиците отбелязват срещу съответния ден по една буква. Буквата ‘s’ означава, че денят ще бъде слънчев, ‘d’ означава, че денят ще бъде дъждовен и ‘o’ означава, че денят ще бъде облачен.
Напишете програма SIN, която прочита от стандартния вход низ, съдържащ прогнозата за някакъв период, не по дълъг от 366 дни и отпечатва най-често срещащата се прогноза – ‘s’, ‘d’ или ‘o’ и броя на дните за които е предвидена.
Вход
ssssdooosdos
Изход
s 6
Задача 61: Максимална разлика
Дадено е цяло положително число N (11,A2,…,AN, не по-големи от 1000. Напишете програма MAXD, която намира максималната възможна разликата между някои две от числата в редицата.
Входните данни трябва да се четат от клавиатурата, а полученият резултат да се изведе на екрана. Първият ред на входа ще съдържа числото N. Вторият – N-те числа разделени с по един интервал. Изходът трябва да съдържа намерената от програмата максимална разлика.
Сподели с приятели: |