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)
# data = ['service', 'out', 'eom']
# data = ['service', 'goal', 'service', 'out', 'service', 'net', 'service', 'return', 'return', 'return', 'out', 'service', 'return', 'goal', 'service', 'goal', 'eom']
data = []
name_events = ['service', 'net', 'out', 'goal', 'return', 'eom']
points = [0, 0]
count_serve = 0
last_hit = 1
serve = 0
while True:
event = input().lower().strip()
if event in name_events:
data.append(event)
else:
print('Такого события ( ' + event + ' ) нет!')
if event == 'eom':
break
for event in data:
if event == 'service':
last_hit = serve
count_serve += 1
if event == 'goal':
points[last_hit] += 1
if event == 'net':
if last_hit == 0:
points[1] += 1
else:
points[0] += 1
if event == 'out':
if last_hit == 0:
points[1] += 1
else:
points[0] += 1
if event == 'return':
if last_hit == 0:
last_hit = 1
else:
last_hit = 0
if count_serve == 5:
count_serve = 0
if serve == 0:
serve = 1
else:
serve = 0
if event == 'eom':
print(points)
break