Гриша любит сериалы. Особенно ему нравятся те сериалы, в которых в любой момент можно узнать, на какой по счету серии он сейчас находится и сколько
в целом серий имеется в этом сериале. Обычно где-нибудь в углу экрана находится надпись, например
«10/100», которая означает, что сейчас Гриша находится на 10 серии, а всего в сериале 100 серий.
На днях Гриша начал смотреть новый сериал, но оказалось, что разработчик для вывода на экран надписи с номерами серий использовал шрифт, которого нет на Гришином компьютере. Шрифт автоматически заменился на какой-то другой, в котором не поддерживается символ
«/».
Теперь два числа, которые должны были быть разделены, слились в одно, и Гришу это невероятно
расстраивает. Он подумал о том, что можно попробовать самому угадывать место, в котором должен
стоять символ «/», но потом понял, что в некоторых случаях подходящих вариантов может быть
несколько. Например, если на экране написано «1234», это может означать как то, что он находится
на 1 уровне из 234, так и то, что он находится на 12 уровне из 34.
Ему стало интересно, а сколько всего существует подставить символ «/» в надпись
на экране так, чтобы надпись была корректной, то есть чтобы слева и справа от символа были
корректные числа без лидирующих нулей и при этом левое число не превосходило правое Грише ответить на этот вопрос.
program xxx;
var i, j, k, n, p, s : integer;
a : array [1..20] of integer;
begin
write ('введите количество инверсий -');
readln(k);
write ('введите количество ламп -');
readln(n);
for i:=1 to n do
a[i]:=0;
for i:=1 to k do
begin
write ('введите инверсию P-');
readln(p);
j:=p;
while j<=n do
begin
if a[j]=0 then a[j]:=1 else a[j]:=0;
j:=j+p
end
end;
s:=0;
for i:=1 to n do
if a[i]=1 then s:=s+1;
write ('Ламп горит -', s);
readln
end.
1) Чтобы перевести из 2-ой системы в 10-ную нужно каждую цифру умножить на основание системы счисления в степени в какой стоит цифра:
111101(2) = 1 * 2^5 + 1 * 2^4 + 1 * 2^3 + 1 * 2 ^ 2 + 0 * 2 ^ 1 + 1 * 2^0 =
= 32 + 16 + 8 + 4 + 0 + 1 = 61 (10)
2) Чтобы перевести число из 10-ой системы в 2-ную нудно делить исходной число на 2 до тех пор пока исходной число не станет меньше 2, остатки от деления записанные в обратном порядке будут результатом
65 : 2 = 32(ост. 1)
32 : 2 = 16(ост. 0)
16 : 2 = 8(ост. 0)
8 : 2 = 4(ост. 0)
4 : 2 = 2 (ост. 0)
2 : 2 = 1 (ост. 0)
65(10) = 1000001(2)