Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 120
1

Изменить комнату так, чтобы все n студентов могли жить в ней

30.12.2015, 11:44. Просмотров 950. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста решить:
В связи с началом учебного года во многих общежитиях возникли проблемы с поселением студентов. В одном из таких общежитий есть чудо-комната размером a × b квадратных метров. Комендант хочет поселить в нее ровно n студентов. Но, по закону, на одного жильца должно быть не меньше 6 квадратных метров жилой площади (то есть, комната для n студентов должна иметь площадь не менее 6n квадратных метров). Комендант может увеличить любую из сторон комнаты (возможно, обе) на произвольное целое положительное количество метров. Помогите коменданту изменить комнату так, чтобы все n студентов могли жить в комнате, и итоговая площадь комнаты была как можно меньше.

Входные данные
В единственной строке через пробел записано три целых числа n, a и b (1 ≤ n, a, b ≤ 109) — количество студентов и размеры комнаты.

Выходные данные
Выведите три целых числа s, a1 и b1 (a ≤ a1; b ≤ b1) — итоговая площадь комнаты и ее размеры. Если существует несколько оптимальных решений, выведите любое.

Примеры тестов
входные данные
3 3 5
выходные данные
18
3 6
входные данные
2 4 4
выходные данные
16
4 4
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.12.2015, 11:44
Ответы с готовыми решениями:

Выясните, может ли турист выбрать палатки так, чтобы в них все могли поместиться
Гена собирается на туристический слет учеников своей школы. В своем классе он был назначен...

Как сделать чтобы пользователи могли выбирать цвет в чате, а также сделать приватную комнату?
как сделать чтобы пользователи могли выбирать цвет в чате, а также сделать приватную комнату, либо...

Преобразовать строку так, чтобы сначала в ней шли все буквы, а потом – все цифры
Имеется строка, содержащая буквы и цифры. Преобразовать строку так, чтобы сначала в ней шли все...

Структуры: изменить таблицу так, чтобы в ней была фамилия и оценки за 9-й класс нового ученика
Годовые оценки по десяти предметам за 9-й класс каждого из 10 учеников класса напечатаны в виде ...

4
6 / 6 / 12
Регистрация: 27.10.2015
Сообщений: 43
10.01.2016, 02:55 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
uses crt;
var n,a,b,i,ai,bi,aj,bj:longint;
begin
    clrscr;
    read(n,a,b);
    if n * 6 <= a * b then writeln(a*b,' ',a,' ',b)
    else if frac(n * 6 / a) = 0 then writeln(n * 6,' ',a,' ',trunc(n * 6 / a))
    else if frac(n * 6 / b) = 0 then writeln(n * 6,' ',trunc(n * 6 / b),' ',b)
    else
        begin
            ai:=a;
            aj:=a;
            bi:=b;
            bj:=b;
            repeat
                bi:=bi+1;
            until (a * bi > n * 6);
            repeat
                ai:=ai+1;
            until (ai * b > n * 6);
            repeat
                aj:=aj+1;
                bj:=bj+1;
            until (n * 6 <= aj * bj);
            if (ai * b <= a * bi) and (ai * b <= aj * bj) then writeln(ai * b,' ',ai,' ',b)
            else if (a * bi <= ai * b) and (a * bi <= aj * bj) then writeln(a * bi,' ',a,' ',bi)
            else writeln(aj * bj,' ',aj,' ',bj);
        end;
    readln;
end.
P.S. Может кто подправит.
1
Платежеспособный зверь
8718 / 4131 / 1600
Регистрация: 28.10.2009
Сообщений: 11,148
14.01.2016, 11:03 3
MrCoub, лажу выдаёт твоя программа.
Пример:
40 9 21
Ответ 240 10 24
Программа выдаёт
243 9 27

Вот вариант:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
var
a,b,n,s,min,a1,b1,rez,r,c,d,i:longint;
begin
min:=maxlongint;
readln(n,a,b);
s:=6*n;
if a*b>=6*n then begin
  r:=a*b;
  a1:=a;
  b1:=b;
  end
        else if (a<=6)or(b<=6)then begin
       r:=s;
       a1:=6;
       b1:=n;
       end
else begin
     if s mod a=0 then c:=s div a else c:=s div a+1;
      for i:=b to c do
         begin
           if s mod i=0 then
              begin
              r:=s;
              a1:=i;
              b1:=s div i;
              break;
               end
            else
              begin
              d:=s div i+1;
              rez:=d*i;
                   if rez<min then begin
                    min:=rez;
                    a1:=d;
                    b1:=i;
                    r:=min;
                    end;
               end;
               end;
               end;
          writeln(r,' ',a1,' ',b1);
          end.
2
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 120
14.01.2016, 13:26  [ТС] 4
кот Бегемот, благодарю. Но все равно неправильный ответ..
0
Платежеспособный зверь
8718 / 4131 / 1600
Регистрация: 28.10.2009
Сообщений: 11,148
14.01.2016, 14:01 5
Что именно в нем неправильного?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2016, 14:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Сделать чтобы объекты рисовались так чтобы мы могли наблюдать это
попытки были,но неудачные void Draw() { glClear(GL_COLOR_BUFFER_BIT);

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

Преобразовать строку так, чтобы все цифры в ней были отсортированы по убыванию
Преобразовать строку так, чтобы все цифры в ней были отсортированы по убыванию. Кому не лень,...

Преобразовать строку так, чтобы все цифры в ней были отсортированы по убыванию
Преобразовать строку так, чтобы все цифры в ней были отсортированы по убыванию. Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.