Объяснение:
Последовательность дней недели периодична с периодом 7, поэтому номер дня недели можно найти, взяв остаток от деления: (номер дня недели первого числа + сколько Такое решение будет давать верный ответ для всех дней недели кроме воскресенья: для воскресений будет выведен ноль (а не 7). Решить это можно, перенумеровав все номера дней недели с нуля, а не с единицы.
m - 1 – номер дня недели первого числа месяца (считая с 0)
n - 1 – пройдёт от первого числа
(m + n - 2) mod 7 – номер нужного дня недели (считая с 0)
(m + n - 2) mod 7 + 1 – ответ.
Программа (PascalABC.NET):
begin
var n := ReadInteger;
var m := ReadInteger;
print((m + n - 2) mod 7 + 1)
end.
Пример ввода:
7
7
Пример вывода:
6
(Действительно, 1 апреля 2018 года – воскресенье, а сегодня, 7 апреля – суббота)
class Node:
def __init__(self, val):
self.l = None
self.r = None
self.v = val
class Tree:
def __init__(self):
self.root = None
def getRoot(self):
return self.root
def add(self, val):
if self.root is None:
self.root = Node(val)
else:
self._add(val, self.root)
def _add(self, val, node):
if val < node.v:
if node.l is not None:
self._add(val, node.l)
else:
node.l = Node(val)
else:
if node.r is not None:
self._add(val, node.r)
else:
node.r = Node(val)
def find(self, val):
if self.root is not None:
return self._find(val, self.root)
else:
return None
def _find(self, val, node):
if val == node.v:
return node
elif (val < node.v and node.l is not None):
return self._find(val, node.l)
elif (val > node.v and node.r is not None):
return self._find(val, node.r)
def deleteTree(self):
# garbage collector will do this for us.
self.root = None
def printTree(self):
if self.root is not None:
self._printTree(self.root)
def _printTree(self, node):
if node is not None:
self._printTree(node.l)
print(str(node.v) + ' ')
self._printTree(node.r)
# 3
# 0 4
# 2 8
tree = Tree()
tree.add(3)
tree.add(4)
tree.add(0)
tree.add(8)
tree.add(2)
tree.printTree()
print(tree.find(3).v)
print(tree.find(10))
tree.deleteTree()
tree.printTree()
Объяснение: