题解 | #编程题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; } } }
}