9«В» — Самостоятельная работа №1.

Задача 1.

a)

Известно, что разделить целое A на натуральное B с недостатком можно так:
low = A // B
при этом будет выполнено A = low * B + rest (0 ≤ rest < B).

А как разделить A на B с избытком, используя только целые числа? Допишите выражение
high = ...
чтобы выполнялось A = high * B - rest (0 ≤ rest < B).

b)

В этой программе нельзя использовать if, циклы, деление, взятие остатка.
Вспоминаем побитовые операции!
Дано целое N. Выведите следующее за ним чётное число.

c)

В этой программе нельзя использовать if, циклы, деление, взятие остатка.
Вспоминаем побитовые операции!
Дано целое N. Выведите следующее за ним нечётное число.

d)

Для каких натуральных чисел n следующая программа выводит Good?

n = int(input())
if (n & (n - 1)) == 0:
    print("Good")

Почему?

e)

Опишите как можно короче, что выводит следующая программа:

n = int(input())
a,b,c,d = -1,1,0,6
for i in range(n):
    a += b
    b += c
    c += d
    print(a)

f)

Опишите как можно короче, что выводит следующая программа:

n = int(input())
a,b,c,d = 0,0,2,6
for i in range(n):
    a += b
    b += c
    c += d
    print(a)

Задача 2.

Дана строка со словами, разделёнными пробелами.
Выведите строку, в которой переставлены соседние слова: 1-е слово исходной строки переставлено со 2-м, 3-е с 4-м и т.д.
Если слов — нечётное число, то последнее остаётся на месте.

Задача 3.

Дана строка со словами, разделёнными пробелами.
Создайте строку со словами в обратном порядке, в которой первый символ каждого слова будет в верхнем регистре, а остальные — в нижнем, и выведите её.

Задача 4.

В пространстве даны два параллелепипеда с рёбрами, параллельными осям координат (и гранями, параллельными координатным плоскостям). Каждый параллелепипед задан двумя тройками чисел — координатами x1,y1,z1 и x2,y2,z2 двух своих противоположных вершин.
Выведите параллелепипед, являющийся их пересечением.

Задача 5.

Дано целое N и натуральное B (2 ≤ B ≤ 36).
Выведите число N в системе счисления по основанию B.
Для обозначения цифр от 10 до 35 (для B > 10) используйте заглавные буквы латинского алфавита от A до Z соответственно.
Например, при N=-35 B=36 программа должна вывести -Z, а при N=35 B=25 — должна вывести 1A.

Задача 6.

Дана прямоугольная матрица MxN чисел из M строк и N столбцов.
Найти в ней любой элемент с его координатами (если такой вообще есть), обладающий следующими свойствами:

Например, для следующей матрицы 2x2
2 3
2 1
таким элементом будет 2 в 0-й строке и 0-м столбце:

Задача 7.

Некоторый банк хочет внедрить систему управления счетами клиентов, поддерживающую следующие операции:

  1. Пополнение счета клиента.
  2. Снятие денег со счета.
  3. Запрос остатка средств на счете.
  4. Перевод денег между счетами клиентов.
  5. Начисление процентов всем клиентам.

Вам необходимо реализовать такую систему. Клиенты банка идентифицируются именами (уникальная строка, не содержащая пробелов). Первоначально у банка нет ни одного клиента. Как только для клиента проводится операция пололнения, снятия или перевода денег, ему заводится счет с нулевым балансом. Все дальнейшие операции проводятся только с этим счетом. Сумма на счету может быть как положительной, так и отрицательной, при этом всегда является целым числом.

Входные строки содержит последовательность операций. Возможны следующие операции:

DEPOSIT name sum — зачислить сумму sum на счет клиента name. Если у клиента нет счета, то счет создается.

WITHDRAW name sum — снять сумму sum со счета клиента name. Если у клиента нет счета, то счет создается.

BALANCE name — узнать остаток средств на счету клиента name.

TRANSFER name1 name2 sum — перевести сумму sum со счета клиента name1 на счет клиента name2. Если у какого-либо клиента нет счета, то ему создается счет.

INCOME p — начислить всем клиентам, у которых открыты счета, p% от суммы счета. Проценты начисляются только клиентам с положительным остатком на счету, если у клиента остаток отрицательный, то его счет не меняется. После начисления процентов сумма на счету остается целой, то есть начисляется только целое число денежных единиц. Дробная часть начисленных процентов отбрасывается.

Для каждого запроса BALANCE программа должна вывести остаток на счету данного клиента. Если же у клиента с запрашиваемым именем не открыт счет в банке, выведите ERROR.

Ввод Вывод
DEPOSIT Ivanov 100
INCOME 5
BALANCE Ivanov
TRANSFER Ivanov Petrov 50
WITHDRAW Petrov 100
BALANCE Petrov
BALANCE Sidorov
105
-50
ERROR