Информатика 3. вставка скобок
ограничение времени 2 секунды
ограничение памяти 64mb
ввод стандартный ввод или input.txt
вывод стандартный вывод или output.txt
назовём скобочную последовательность, состоящую из трёх видов скобок (круглых, квадратных или фигурных) , если она может быть построена по следующим правилам:
пустая последовательность является правильной.
если
a
— правильная скобочная последовательность, то
{
a
}
,
[
a
]
и
(
a
)
— правильные скобочные последовательности.
если
a
и
b
— правильная скобочная последовательность, то
a
b
— правильная скобочная последовательность.
иначе говоря, правильная скобочная последовательность получается, если мы берём какое-то выражение с корректно расставленными скобками и убираем оттуда всё, кроме скобок.
вам дана скобочная последовательность длины
n
. вам разрешено вставлять скобки в любое место последовательности (в начало, в конец и между двумя любыми скобками). ваша — добавить не более
n
скобок так, чтобы последовательность превратилась в правильную.
разберём три примера к . в первом примере все три скобки добавлены в конец — мы закрываем уже открытые скобки. во втором примере последовательность и так является правильной. можно вывести её, можно, к примеру, добавить ещё пару скобок — минимальность ответа не требуется. в третьем примере последовательность правильной не является — скобки закрываются не в том порядке. можно исправить, например, вставив открывающую квадратную скобку сперели и закрывающую квадратную — перед закрывающей фигурной.
формат ввода
на вход подаётся непустая строка из не более, чем
1
0
4
символов, состоящая из символов ‘{’, ‘}’, ‘[’, ‘]’, ‘(’ и ‘)’.
формат вывода
выведите итоговую строку, получившуюся после вставки скобок и являющуюся правильной скобочной последовательностью. длина строки не должна превышать удвоенной длины входной строки. если ответов несколько, выведите любой. минимизировать длину строки не требуется.
пример 1
ввод вывод
([{
{}
пример 2
ввод вывод
пример 3
ввод вывод
{[}]
{}[]{}[]
примечания
решением этой должна являться программа на одном из представленных в системе языков программирования, решающая данную . программа должна считывать данные со стандартного ввода (клавиатуры) и выводить на стандартный вывод (монитор). никаких дополнительных строк или символов выводить не разрешается.
1) 89₁₀ = 1011001₂
2) 600₁₀ = 100101100₂
3) 2010₁₀ = 11111011010₂
1) 513₁₀ = 1001₈
2) 600₁₀ = 1130₈
3) 2010₁₀ = 3732₈
Объяснение:
1)
89 / 2 = 44 + остаток 1
44 / 2 = 22 + остаток 0
22 / 2 = 11 + остаток 0
11 / 2 = 5 + остаток 1
5 / 2 = 2 + остаток 1
2 / 2 = 1 + остаток 0
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
89₁₀ = 1011001₂
2)
600 / 2 = 300 + остаток 0
300 / 2 = 150 + остаток 0
150 / 2 = 75 + остаток 0
75 / 2 = 37 + остаток 1
37 / 2 = 18 + остаток 1
18 / 2 = 9 + остаток 0
9 / 2 = 4 + остаток 1
4 / 2 = 2 + остаток 0
2 / 2 = 1 + остаток 0
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
600₁₀ = 100101100₂
3)
2010 / 2 = 1005 + остаток 0
1005 / 2 = 502 + остаток 1
502 / 2 = 251 + остаток 0
251 / 2 = 125 + остаток 1
125 / 2 = 62 + остаток 1
62 / 2 = 31 + остаток 0
31 / 2 = 15 + остаток 1
15 / 2 = 7 + остаток 1
7 / 2 = 3 + остаток 1
3 / 2 = 1 + остаток 1
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
2010₁₀ = 11111011010₂
1)
513 / 8 = 64 + остаток 1
64 / 8 = 8 + остаток 0
8 / 8 = 1 + остаток 0
1 / 8 = 0 + остаток 1
записываем остатки снизу вверх
513₁₀ = 1001₈
2)
600 / 8 = 75 + остаток 0
75 / 8 = 9 + остаток 3
9 / 8 = 1 + остаток 1
1 / 8 = 0 + остаток 1
записываем остатки снизу вверх
600₁₀ = 1130₈
3)
2010 / 8 = 251 + остаток 2
251 / 8 = 31 + остаток 3
31 / 8 = 3 + остаток 7
3 / 8 = 0 + остаток 3
записываем остатки снизу вверх
2010₁₀ = 3732₈
Вопрос скорее будет звучать "как много могли съесть толстяки?".
#include <iostream>
using namespace std;
int main() {
int multiplier = 1;
float weightCake = 0;
float t1(0), t2(0), t3(0);
float t1Cakes(0), t2Cakes(0), t3Cakes(0);
cout << "Weight of cake, fat people 1-3: ";
cin >> weightCake; cin >> t1; cin >> t2; cin >> t3;
while(1) {
t1Cakes = multiplier * weightCake * 1;
if(t1Cakes > t1/2) {
cout << multiplier - 1;
break;
}
t2Cakes = multiplier * weightCake * 2;
if(t2Cakes > t2/2) {
cout << multiplier - 1;
break;
}
t3Cakes = multiplier * weightCake * 4;
if(t3Cakes > t3/2) {
cout << multiplier - 1;
break;
}
++multiplier;
}
}