L и височина h. Известно е, че с една кутия боя могат да се боядисат m квадратни единици площ от стената. Напишете програма



страница2/5
Дата31.12.2017
Размер0.96 Mb.
#38459
ТипЗадача
1   2   3   4   5

Примерен изход


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

Решение:

Когато се определя оптимален елемент, първата стъпка е да определим един от всички елементи, който отговаря на останалите условия и е евентуален кандидат за оптимален. След това го сравняваме с всички останали и ако намерим такъв, който го превъзхожда – го заместваме.

Ще определим величините, които участват в програмата:



  1. Необходими са ни две целочислени променливи: едната – int a;, за да записваме в нея текущо въведеното число и друга – за максималното отрицателно число int mn;

  2. Както вече споменахме първо трябва да открием първото отрицателно число от поредицата и да го обявим за максимално. Да обърнем внимание и на това, че във въвежданата последователност може и да няма отрицателни елементи. Ето защо трябва да предвидим и варианта да се въведе 0, без да е въведен нито един отрицателен елемент и тогава трябва да отпечатаме 0. Намирането на първия отрицателен елемент ще се реализира с цикъл, в който числата ще се четат от клавиатурата докато бъде въведено отрицателно число или 0.

do cin>>a while(a>0);

  1. След като цикълът завърши, се налага да проверим причината за спирането му. Това може да бъде въвеждане на 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

Решение:

В тази задача ще трябва да определим оптимален елемент по два признака, като първият е водещ, но при равенство – оптималността се решава в полза на този с по-добър втори признак (в случая – с по-малко тегло). Ето защо за златния медалист трябва да съхраним не само номера, но и резултата и теглото му.


  1. Необходими са ни две целочислени променливи: едната – int n;, за броя на състезателите и друга – за номера на златния медалист – int mn. Освен това, ще са необходими по две променливи за постижението и теглото на състезателя, чиито данни въвеждаме в момента – float p,t; както и за постижението и теглото на златния медалист – float mp,mt;.

  1. Тук за определяне на първоначалната стойност на оптималния елемент, ще използваме факта, че в най-лошия случай резултата на един състезател е 0 и ще приемем този резултат за максимален. Естествено е да очакваме, че при въвеждане на данните за всички състезатели ще се въведе поне едно постижение, различно от 0 и то ще замести приетото за оптимално нулево постижение. Така, че преди да продължим с въвеждане на данните за броя и постиженията на състезателите, ще направим следната инициализация на променливите, характеризиращи златния медалист:

mp=mt=mn=0;

  1. Въвеждаме броя на състезателите:

cin>>n;

  1. Сега трябва да въведем последователно постиженията и теглата на всичките 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;



}

}


  1. Накрая извеждаме номера на златния медалист:

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-те числа разделени с по един интервал. Изходът трябва да съдържа намерената от програмата максимална разлика.



Сподели с приятели:
1   2   3   4   5




©obuch.info 2024
отнасят до администрацията

    Начална страница