0
0 комментариев

Я новичок. Совсем новичок. Помогите разобраться с проблемой. Есть задача: Мэрия города М-ска приняла решение провести реновацию домов на улице Льва Толстого. Как известно, дома на этой улице нумеруются натуральными числами от 1 до N, при этом на одной части улицы стоят дома с чётными номерами, а на другой — с нечётными. Кроме этого, дома с номерами от L до R относятся к исторической застройке, и под программу реновации не попадают.

Помогите мэрии определить, сколько домов попадет под программу реновации на чётной стороне улицы.

Формат входных данных
На вход программе даются три целых числа N, L и R (1 ≤ L ≤ R ≤ N ≤ 1018).

Формат выходных данных
Требуется вывести одно целое число — количество домов, которые попадут под программу реновации на чётной стороне улицы.

Примечания
В первом примере из условия на чётной стороне улицы 5 домов — 2, 4, 6, 8 и 10. Из них дома 4 и 6 относятся к исторической застройке, поэтому под программу реновации не попадут. Оставшиеся три дома имеют номера 2, 8, 10.

Во втором примере, вся чётная сторона улицы относится к исторической застройке.
Мое решение:
N,L,R=map(int,input().split())

e=0 # всего количество чётных домов
y=0 # всего чётных домов не рестовривуемых
a=N%2 # N чёт или не чёт
b=N/2 # количество чётных всего
c=N-1
d=c/2 #кол-во чётных домов если последний дом нечёт
f=R-L
g=f+1 #кол-во домов не попавших в реновацию
h=L%2#чёт или не чёт первый дом исторической застройки
i=R%2#чёт или не чёт последний дом исторической застройки
j=g/2 #кол-во чётных домов если первый дом исторической застройки чёт ,а последний дом исторической застройки нечёт или наоборот первый дом исторической застройки нечёт ,а последний дом исторической застройки чёт
m=g-1
n=m/2
o=n+1#кол-во чётных домов ,если первый дом исторической застройки чёт и последний дом исторической застройки чёт
s=g-1
t=s/2#кол-во чётных домов ,если первый дом исторической застройки нечёт и последний дом исторической застройки нечёт
if N>1000000000000000000 or L>1000000000000000000 or R>1000000000000000000:
print(«слишком много домов»)

if L > R > N:
print(«неправильное условие»)
if a==0:
e =e+b
if a==1:
e=e+d
if h==1 and i==0:
y=y+j
if h==0 and i==1:
y=y+j

if h==0 and i==0:
y=y+o

if h==1 and i==1:
y=y+t
p=e-y
print(int(p))

При проведении теста на больших числах, например: 878806966178687488 650040488697528320 733234262731653120 — ошибочный ответ, тест неправильный.
Помогите , пожалуйста, разобраться, почему глючит на больших числах. Спасибо!

N,L,R=map(int,input().split())
 e=0 # всего количество чётных домов
y=0 # всего чётных домов не рестовривуемых
a=N%2 # N чёт или не чёт
b=N/2 # количество чётных всего
c=N-1
d=c/2 #кол-во чётных домов если последний дом нечёт
f=R-L
g=f+1 #кол-во домов не попавших в реновацию
h=L%2#чёт или не чёт первый дом исторической застройки
i=R%2#чёт или не чёт последний дом исторической застройки
j=g/2 #кол-во чётных домов если первый дом исторической застройки чёт ,а последний дом исторической застройки нечёт или наоборот первый дом исторической застройки нечёт ,а последний дом исторической застройки чёт
m=g-1
n=m/2
o=n+1#кол-во чётных домов ,если первый дом исторической застройки чёт и последний дом исторической застройки чёт
s=g-1
t=s/2#кол-во чётных домов ,если первый дом исторической застройки нечёт и последний дом исторической застройки нечёт
if N>1000000000000000000 or L>1000000000000000000 or R>1000000000000000000:
    print("слишком много домов")
     if L > R > N:
    print("неправильное условие")
if a==0:
        e =e+b
if a==1:
        e=e+d
if h==1 and i==0:
        y=y+j
if h==0 and i==1:
        y=y+j
 if h==0 and i==0:
        y=y+o
 if h==1 and i==1:
        y=y+t
p=e-y
print(int(p))


Добавить комментарий