Problem Statement
Given a marble of size l * b, your task is to find out if it can be cut into pieces of size 3×1 or not.Input Format
First line will contain T i.e. number of the test cases.Next T lines will contain pair of integers l and b separated by a single space.
Constraints
1≤T≤10^51≤l,b≤10^9
Output Format
Print "YES" if it is possible to cut the given marble without any area left, else print "NO" followed by remaining area.Problem with some pitfalls.
There are 3 cases:
- At least one side % 3 == 0, then "Yes".
- At least one side < 3. then "No" and remaining area will be (a % 3) * (b % 3).
- Otherwise, "No", remaining area = (a * b) % 3.
Code:
import java.util.Scanner;
/*
* https://www.hackerrank.com/contests/101hack22/challenges/marble-cut
*/
public class P1_MarbleCut {
public static void main(String[] args) {
new P1_MarbleCut().doJob();
}
private void doJob() {
try (Scanner sc = new Scanner(System.in)) {
int t = sc.nextInt();
StringBuilder res = new StringBuilder();
while (t-- > 0) {
long a = sc.nextInt();
long b = sc.nextInt();
if (a % 3 == 0 || b % 3 == 0) {
res.append("YES");
} else if (a < 3 || b < 3) {
res.append("NO ").append((a % 3) * (b % 3));
} else {
res.append("NO ").append((a * b) % 3);
}
res.append(System.lineSeparator());
}
System.out.println(res.toString().trim());
}
}
}
No comments :
Post a Comment