Иван Петрович взял отпуск продолжительностью n дней. Первый день отпуска выпадает на день недели под номером d (1 — понедельник, 2 — вторник, ..., 7 — воскресенье). Иван Петрович любит ездить отдыхать на Кипр. Но вылеты на Кипр из его родного города есть только по понедельникам, а обратно — только по воскресеньям. Иван Петрович хочет понять, какое максимальное количество недель он сможет провести на Кипре в свой отпуск (день прилёта и день обратного вылета Иван Петрович считает днями, проведёнными на Кипре ему вычислить это. Входные данные
В первой строке входных данных записано целое число n (1 ≤ n ≤ 109) — продолжительность отпуска. Во второй строке записано целое число — d (1 ≤ d ≤ 7) — номер дня недели первого дня отпуска.
Выходные данные
Требуется вывести одно целое число — количество недель, которое Иван Петрович проведёт на Кипре.
Система оценки
Решения, работающие верно при n ≤ 1000, будут оцениваться в
Примеры
Ввод
Вывод
Пояснение
14
1
2
Отпуск продолжается 14 дней и начинается в понедельник. Поэтому Иван Петрович улетит на Кипр в первый день и вернётся в 14-й день, продолжительность пребывания на Кипре составит две недели.
17
3
1
Отпуск начинается в среду. Ближайший понедельник будет 6-м днём отпуска. Ивану Петровичу придётся вернуться в воскресенье, которое будет 12-м днём отпуска. Следующее воскресенье будет 19-м днём отпуска, а продолжительность отпуска только 17 дней. Поэтому на Кипре Иван Петрович проведёт всего лишь одну неделю.
//Первый вариант
var a, b:integer;
BEGIN
write('Введите первое число = '); readln(a);
write('Введите второе число = '); readln(b);
writeln(a-(-b));
END.
//---------------------------------------
//Второй вариант
function recSumBits(a, b:integer):integer;
var o1, o2: integer;
begin
if b = 0 then recSumBits := a
else
begin
o1 := a xor b;
o2 := (a and b) shl 1;
recSumBits := recSumBits(o1, o2);
end;
end;
var a, b: integer;
BEGIN
write('Введите первое число = '); readln(a);
write('Введите второе число = '); readln(b);
writeln(recSumBits(a, b));
readln;
END.
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println;
a:=a.Reverse.ToArray; a.Println
end.
Пример
n= 13
1 80 -54 36 84 -43 -88 43 36 9 -14 -19 -38
-38 -19 -14 9 36 43 -88 -43 84 36 -54 80 1
Вариант для вывода элементов массива в 8 позициях:
begin
var a:=ArrRandom(ReadInteger('n='),-99,99);
a.Select(t->Format('{0,8}',t)).Println('');
a:=a.Reverse.ToArray;
a.Select(t->Format('{0,8}',t)).Println('')
end.