Сайт підготовки до олімпіади з інформатики

програмування в С++

2 тур Волинська учнівська Інтернет-олімпіада з програмування PDF Печать E-mail
Добавил(а) Administrator   
13.11.13 11:48

2 тур - з 11.11 по 17.11.2013

точка входу для відправлення розв'язків http://93.171.173.139/cgi-bin/new-client?contest_id=17

Задача 1. За сірниками (20 балів)

Ім'я вхідного файлу: money.dat Ім'я вихідного файлу: money.ans Програма: money.*

Ліміт часу: 1 секунда

Василько записався на гурток технічної творчості «Умілі ручки». На гуртку йому показали, як будувати сірникові будиночки. Але для побудови йому необхідно придбати сірники.

Пачки сірників продаються в трьох різних видах упаковок. Упаковка зі 100 пачок коштує 1 грн., з 20 пачок – 30 коп., а одна окрема пачка коштує 2 коп.

Василько обмежений в коштах, підрахуйте яка мінімальна сума має бути у Василька, щоб купити N пачок сірників.

Технічні умови

   Вхідні дані

   Кількість N пачок, які потрібно купити. N ≤ 1000.

   Вихідні дані.

   Мінімальна сума, потрібна для покупки, в гривнях.

Приклад

money.dat

123

money.ans

1.36

Розв’язок

a=n/100;

n=n%100;

b=n/20;

n=n%20;

c=n%20;

r=(a*100+b*30+c*2)/100;

a=n/100;

n=n%100;

b=n/20;

n=n%20;

c=n%20;

if(b>3){b=0;c=0;a=a+1;}

if(c>15){c=0;b=b+1;}

r=double(a*100+b*30+c*2)/100.0;

cout.precision(2);

cout<< fixed<<r<<endl;

Задача 2. Сірники (100 балів)

Ім'я вхідного файлу: match.dat Ім'я вихідного файлу: match.ans Програма: match.*

Ліміт часу: 1 секунда

   Василько для побудови сірникових будиночків, почав розкладати сірники на столі. Йому стало цікаво, яка мінімальна кількість сірників потрібна для того, щоб викласти на площині N  квадратів зі стороною в один сірник? Сірники він не ламав та не клав один на одного, вершинами квадратів були точки, де сходились кінці сірників.

   Поможіть Васильку підрахувати мінімальну кількість сірників, для побудови квадратів N.

Технічні умови

   Вхідні дані

   Єдиний рядок вхідного файлу містить одне ціле число N (1 ≤ N ≤ 109).

   Вихідні дані

   Одне число, мінімальна кількість сірників.

Приклад

match.dat

4

match.ans

12

Розв’язок

a=sqrt(double(n));

r=2*a*(a+1);

a=sqrt(double(n));

b=n-(a*a);

if (b==0)r=2*a*(a+1);else

r=2*a*(a+1)+b*2+((b-1)/a+1);

 

Статистика

Пользователей : 261
Статей : 225
Просмотрено статей : 105371

Вход/Регистрация

Нет