题解 | #编程题1#
编程题1
https://www.nowcoder.com/practice/ff518f3162c849b9a84d1fab8e7179be
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
for(int i = 0; i < t; i++){
long n = in.nextLong();
long k = in.nextLong();
long d1 = in.nextLong();
long d2 = in.nextLong();
boolean result = solve(n,k,d1,d2);
// int[] ans = solve(n,k,d1,d2);
if(result) {
System.out.println("yes");
}else{
System.out.println("no");
}
}
}
private static boolean solve( long n , long k, long d1, long d2){
if(n == k) return d1 == d2 && d1 == 0;
if(n % 3 != 0 || d1 > n/3 || d2 >n/3) return false;
long x = n - k;
long hd = Math.max(d1, d2), ld = Math.min(d1,d2);
// B最小
long y1 = 2 * hd;
// B最大
long y2 = hd + ld;
// B居中,y3中C最大,y4中A最大
long y3 = 2*d2 + d1;
long y4 = 2*d1 + d2;
int[] ans = new int[4];
if(k>= d1 + d2 && (x-y1 == 0 || (x-y1> 0 &&(x-y1) % 3 == 0))){
return true;
}else if (k >= 2 * hd -ld &&(x-y2 == 0 || (x-y2>0 &&(x-y2) % 3 == 0))){
return true;
}else if(k >= 2* d1 - d2 &&(x-y3 == 0 ||(x-y3>0 &&(x-y3) % 3 == 0))){
return true;
}else if(k >= 2* d2 - d1 &&(x-y4 == 0 || (x-y4>0 &&(x-y4) % 3 == 0))){
return true;
}
else{
return false;
}
}
}
}
查看17道真题和解析