A. A Variety of Operations | Deltix Round Summer 2021 Div.1 + Div2

LONGNEW·2021년 8월 31일
0

CP

목록 보기
96/155

https://codeforces.com/contest/1556/problem/A
시간 1초, 메모리 256MB

input :

  • t (1 ≤ t ≤ 104)
  • c d (0 ≤ c, d ≤ 109)

output :

  • For each test case output a single number, which is the minimal number of operations which William would have to perform to make a equal to c and b equal to d, or −1 if it is impossible to achieve this using the described operations.
    각 테스트 케이스에서 a와 b를 c와 d로 만들기 위해 필요한 최소한의 연산 횟수를 출력하든지 만들 수가 없는 경우에는 -1을 출력하시오.

조건 :

  • a and b initially both equal to zero
    a와 b는 0으로 시작된다.

  • Before performing each operation some positive integer k is picked, which is then used to perform one of the following operations: (note, that for each operation you can choose a new positive integer k)
    각 연산을 수행하기 전에 임의의 숫자 k를 정할 수 있다. 아래의 연산을 수행할 때 사용할 숫자이다.

. add number k to both a and b
a와 b에 k를 더하기
. add number k to a and subtract k from b
a에는 더하고 b에서는 빼기
. add number k to b and subtract k from a.
b에는 더하고 a에는 빼기

  • numbers a and b may become negative as well.
    a와 b는 음수가 될 수도 있다.

특정한 수를 더하게 하고 다른 쪽에서는 빼게 한다면 두 수의 차이는 짝수만큼 날 수 밖에 없다.

만약 두 수의 차이가 홀수라면 만들 수 없는 경우인 것이다.

그리고 두 수가 동일하다면 1번의 연산으로 가능하고 그 외에 0 0 의 경우에는 아무런 연산이 필요없다.

import sys

for i in range(int(sys.stdin.readline())):
    c, d = map(int, sys.stdin.readline().split())

    if abs(c - d) % 2 == 1:
        print(-1)
        continue

    if c + d == 0:
        print(0)
        continue

    if c == d:
        print(1)
        continue

    print(2)

0개의 댓글