Problem Links :
Practice : Click here
Contest : Click here
Author : Soham Chakrabarti
Tester : Arkapravo Ghosh
Editorialist : Soham Chakrabarti
Difficulty :
Easy
PREREQUISITES:
Observation, Math
PROBLEM:
You are given two numbers A and B and you can do the following operations on them.
- A can be incremented to 2A
- B can be decremented to B−2
By doing these operations any number of times (including zero). Can A and B be made equal ?
EXPLANATION:
Observation is important.
As we can see that A can only be incremented and B can only be decremented in the above operations.
We can print a NO for all A > B
cases.
Next, coming to the logic. (Assume A <= B, here) :-
-
A and B both are even, always a YES
-
A and B both are odd, always a YES
-
A is even, B is odd, always a NO
-
A is odd, B is even, here we have to consider two cases :-
-
If (B >= 2A ), always a YES ( Example A = 5, B = 10 and above )
-
else always a NO ( Example A = 5, B = 8 )
-
PSEUDO CODE:
TC{ int a, b; cin >> a >> b; if(a > b){ cout << "NO" << '\n'; continue; } if(a%2 == 0 && b%2 == 0){ cout << "YES" << '\n'; } else if(a%2 == 0 && b%2){ cout << "NO" << '\n'; } else if(a%2 && b%2){ cout << "YES" << '\n'; } else{ if(b >= 2 * a) cout << "YES" << '\n'; else cout << "NO" << '\n'; } }
LINKS:
Author’s Solution : Click here
Tester’s Solution : Click here