Loading...
r_panchev97 avatar r_panchev97 71 Точки

Подход към решаване на 1ва задача от приемния изпит C# Basics

Някой може ли да ми даде по-лесен начин за подхождане към първа задача от изпита.Как да започна с това да намеря правилната формула, за да реша задачата ? Благодаря предварително!

 Например тази: 
 

            Problem 1 – Piggy Bank

Anastas wants to buy himself a tank to drive around the streets of Sofia (he’s a fan of the classic game Carmageddon). He’s saving up and he needs your help to keep track of his progress.

Every day in a given month he saves up 2 leva and puts them in his piggy bank. Unless there is a party that day – he needs 5 leva to buy vodka on a party day, so he takes them out of the piggy bank.

You will be given the tank’s price and the number of party days in a month, each on a separate line. Assume each month has 30 days and each year has 12 months. Calculate how many years and months Anastas will need in order to save enough to buy his very own tank and print the result on the console in the format “X years, Y months”. In case he isn’t saving up at all and is wasting money on cheap alcohol instead, print “never”.

Note that if, for example, Anastas needs 3.1 months, you need to round that up – so you have to print “0 years 4 months”. The years and months should be integer numbers. Check out the examples to understand your task better.

Input

The input will be read from the console. The input consists of exactly two lines:

  • On the first line you will be given an integer – the price of the tank.
  • On the second line you will be given the number of party days in a month.

The input will always be valid and in the format described, there is no need to check it explicitly.

Output

The output should be printed on the console.

  • On the only output line print the number of years and months Anastas will need to save enough money in the format “X years, Y months”, or print “never” in case he’s actually wasting money each month.

Constraints

  • The price of the tank will be an integer in the range [1 … 2 000 000 000].
  • The number of party days will be an integer in the range [0 … 30].
  • Allowed working time: 0.2 seconds. Allowed memory: 16 MB.

    Ето и примерите
Тагове:
0
Programming Basics 24/06/2015 00:12:02
RoYaL avatar RoYaL Trainer 6849 Точки

Не че нещо, но в снимката която си дал, в Comments я има формулата.

Иначе няма сребърен куршум за това как да извлечеш формула от условие. Обикновено такиава задачи са повече от логични от към формула. Т.е. буквален превод от думи в аритметика.

Ето ти подобно условие. "Всеки месец има 30 дни, от които 4 уикенда. Пешо харчи два пъти повече пари през уикенда, от колкото през работните дни. Като вход получаваш колко харчи пешо през един ден от уикенда. Намери колко пари е изхарчил Пешо за 3 месеца".

Ако получиш като вход, да речем, 6 лева за ден от уикенда, какво означава това? Първо 4 уикенда са 8 дни. Това означава, че Пешо е изхарчил 8 дни по 6 лева тоя месец. Ако месеца има 30 дни, и 8 от тях са уикенди - логично - остават 22 работни дни. Щом през уикендите харчи 2 пъти повече от колкото през работните, значи през работните харчи два пъти по-малко, т.е. от 6 стават 3. 22 дни по 3 лева - 66 лева. Заедно с отези 8 х 6, които са 48 - правят 114 лева за 1 месец. Три месеца са 3 пъти по толкова, т.е. 342 лв".

Формулата каква е

x - парите на ден от уикенда

y - парите през работен ден

A - Уикенд дните

B - Работните дни

-----------------------

x = Потребителски вход (Console.ReadLine())

y = x / 2

A = 2 * 4 = 8

B = 30 - A = 22

-----------------------------------------------------

Пари за три месеца = 3 * ((A * x) + (B * y))

 

Много наподобява на логическите задачи от периода 5-7 клас. Трябва да определиш какво ти е дадено. Какво се търси и на база на това да успееш да определиш някакви междинни неизвестни, като в случая y, A и B

3
24/06/2015 00:57:01
t.316 avatar t.316 137 Точки

Първо трябва внимателно да разгледаме условието на задачата. Много е важно да разберем, какво точно се изисква от нас. Важно е да видим какви данни получаваме, като вход и да помислиме, как от тях да стигнеме до това, което ни е нужно.

Първо и най-важно според мен е да разберем, какво точно ни е нужно да открием. За тази задача трябва да намериме, колко време ще спестява момчето за да си купи танк. За целта ни е нужно да разберем колко пари ще добавя към спестяванията си всеки месец. След като откриеме това просто трябва да видиме спрямо зададената ни цена колко пъти по толкова пари ще са му нужни и така ще открием броя на месеците. Сега оставя да превърнем месеците в години и каквото остане да запишем като месеци. 

Раздробили задачата така само трябва да я напишеме с код. Казвам само защото сега вече след като знаем малките стъпки за решаването на задачата дори да незнаеме нещо може да го откриеме в интернет или да попитаме някого. 

В конкретния случай имаме месец с 30 дни като, ако нямя да се ходи на парти слагаме 2 лева. Дадени са ни парти дните и като ги махнем от всичките дни в месеца получаваме дните, в коrто слагаме пари в касичката. При парти дните явно ще се купува водка така, че махаме 5 лева. За да получиме общите спестявания за месеца ни е нужно да махаме 5 * парти дните и 2 * останалите дни. След това намираме разликата между тях така виждаме колко сме събрали за целия месец.

Примирно при 5 партита се получава 30 - 5 = 25 следователно (25 * 2) - (5 * 5) = 50 - 25 = 25 Спестени пари за месеца.

След това просто трябва да разделиме цената на танка, която имаме като входнни данни на 25 и ще получиме нужните ни месеци. Закръгляме ги към по-голямото число, както е по условие и делим на 12 за годините, а с % намираме месеците.  Ако парите за партита са повече от спестените то казваме, че никога няма да саберем пари за танка(мого купонясва).

Ето и как изглежда: http://pastebin.com/3bn38SKj

 

3
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.