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

}

全部评论

相关推荐

挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
10-15 15:00
潍坊学院 golang
跨考小白:这又不是官方
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务