A,B = map(int,input().split())
if A>B:
A,B = B,A
X,Y = map(int,input().split())
result = []
flag = True
if Y>=abs(X) or Y<0:
flag = False
if flag:
X = abs(X)
value = X*(A//X)+Y
while value<=B:
if A<=value<=B:
if result:
flag = False
break
result.append(value)
value += X
if flag and result:
print(*result)
else:
print('Unknwon Number')

  이 문제에서 주의해야할 점은 Y가 X보다 큰게 들어올수도 있으며, 0 미만일수도 있다.

 

그럴 경우엔 False를 해주고, A,B가 서로 반대로 들어올 수 있는것만 조심해주면 된다.

 

A~B 사이에서 생길수 있는 최소의 X,Y로 만들수 있는 수를 찾는다.

 

그리고 난뒤에 X를 늘려가면서, 2개이상의 수가 있을때에는 flag로 Unkwon Number를 출력해주면 된다.

A,B = map(int,input().split())
if A>B:
A,B = B,A
X,Y = map(int,input().split())
X = abs(X)
left_div = A//X
right_div = (B+X)//X
result = []
flag = True
if Y>=abs(X) or Y<0:
flag = False
if flag:
for div in range(left_div,right_div+1):
temp = div*X+Y
if A<=temp<=B:
if result:
flag = False
break
else:
result.append(temp)
if flag and result:
print(*result)
else:
print('Unknwon Number')

 

이건 반복문을 통해서 구현한 것이다.

+ Recent posts