Написать программу НА Си++, которая вводит координаты точки (x, y) и определяет, попадает ли точка в заштрихованную область на рисунке. Попадание на границу области считать попаданием в область.
Очевидно, решения нет, если нужно выпустить ровно K = NM - 1 человека: он должен перейти в какую-то комнату, но из всех комнат, кроме его, есть путь наружу.
При всех остальных K можно, например, поступить так:
- отсчитать сверху и слева направо K комнат, в них открыть дверь вверх
- в оставшихся комнатах, не находящихся в нижнем ряду, открыть путь вниз
- в оставшихся комнатах нижнего ряда, кроме правого нижнего угла, открыть дверь вправо
- в правом нижнем углу, если там ещё не открыта дверь, открыть дверь влево
В итоге K человек уйдут с территории через верх, а остальные будут бесконечно ходить между двумя комнатами в правом нижнем углу.
Код (python 3):
N, M, K = map(int, input().split())
if K == N * M - 1:
print("IMPOSSIBLE")
elif K == N * M:
for _ in range(N):
print("U" * M)
else:
for _ in range(K // M):
print("U" * M)
if K // M < N - 1:
print("U" * (K % M) + "D" * (M - K % M))
for __ in range(N - 1 - K // M):
print("D" * M)
print("R" * (M - 1) + "L")
else:
print("U" * (K % M) + "R" * (M - K % M - 1) + "L")
5. 417₈ + CA₁₆ = 731₈
6. 13₉
Объяснение:
5.
417₈ = 7*8⁰ + 1*8¹ + 4*8² = 271₁₀
CA₁₆ = A*16⁰ + C*16¹ = 202₁₀
473₁₀ = 1*8⁰ + 3*8¹ + 7*8² = 731₈
8.
12₁₀ = 0*2⁰ + 0*2¹ + 1*2² + 1*2³ = 1100₂
12₁₀ = 0*3⁰ + 1*3¹ + 1*3² = 110₃
12₁₀ = 0*4⁰ + 3*4¹ = 30₄
12₁₀ = 2*5⁰ + 2*5¹ = 22₅
12₁₀ = 0*6⁰ + 2*6¹ = 20₆
12₁₀ = 5*7⁰ + 1*7¹ = 15₇
12₁₀ = 4*8⁰ + 1*8¹ = 14₈
12₁₀ = 3*9⁰ + 1*9¹ = 13₉
12₁₀ = 1*11⁰ + 1*11¹ = 11₁₁
12₁₀ = 0*12⁰ + 1*12¹ = 10₁₂
12₁₀ = 12*13⁰ = C₁₃
12₁₀ = 12*14⁰ = C₁₄
12₁₀ = 12*15⁰ = C₁₅
12₁₀ = 12*16⁰ = C₁₆
Очевидно, решения нет, если нужно выпустить ровно K = NM - 1 человека: он должен перейти в какую-то комнату, но из всех комнат, кроме его, есть путь наружу.
При всех остальных K можно, например, поступить так:
- отсчитать сверху и слева направо K комнат, в них открыть дверь вверх
- в оставшихся комнатах, не находящихся в нижнем ряду, открыть путь вниз
- в оставшихся комнатах нижнего ряда, кроме правого нижнего угла, открыть дверь вправо
- в правом нижнем углу, если там ещё не открыта дверь, открыть дверь влево
В итоге K человек уйдут с территории через верх, а остальные будут бесконечно ходить между двумя комнатами в правом нижнем углу.
Код (python 3):
N, M, K = map(int, input().split())
if K == N * M - 1:
print("IMPOSSIBLE")
elif K == N * M:
for _ in range(N):
print("U" * M)
else:
for _ in range(K // M):
print("U" * M)
if K // M < N - 1:
print("U" * (K % M) + "D" * (M - K % M))
for __ in range(N - 1 - K // M):
print("D" * M)
print("R" * (M - 1) + "L")
else:
print("U" * (K % M) + "R" * (M - K % M - 1) + "L")