A国有k种不同的方言-拼多多20190506笔试第二题

原题

A国有k种不同的方言,通过调查得知
有X1人说第1种方言
有X2人说第2种方言
。。。。
有Xk人说第k种方言
已知a国共有n人,问会说所有k种方言的人至少有多少

输入
第一行包括两个数n,k分别表示a国人口数量和方言数量。
第二行包括k个整数,其中第i个数表示会说第i种方言的人数

数据范围
2 <= k <=20
1 <=Xi <= N <= 1000000000

输出一行
一个整数 会说所有方言的最少人数

输入
1000000000 2
800000000 800000000

输出
600000000

为了方便,以以下的算例解释(语言以a, b, c, d,…标记)
输入
10 3
8 7 6

输出
1

题意理解

  1. 首先问的是最少有多少。(很重要)
  2. 说某种语言不表示这个人不会别的语言。(看起来是废话,但是一定要理解)

思路

1.第一次输入8,表示有8个人说a语言(注意这是说不是会说),那么最少有8人会说a语言(这是会说);
2. 第二次输入7,表示有7个人说b语言,那么最少有7个人会说b语言,最多有10 - 7 = 3个人不会说b语言,上面提到,最少有8人会说a语言,那么最少(都是会a的人不会b)有8 - 3 = 5 个人会说a和b语言;
3. 同理第三次输入6,表示有6个人说c语言,那么最少有6个人会说c语言,最多有10 - 6 = 4个人不会说c语言,上面提到,最少有5人会说a和b语言,那么最少(不会c的人都是既会a也会b语言的人)有5 - 4 = 1 个人会说a,b, c语言;
如果最终的值小于0表示最少有0个人同时会所有语言。

代码

public class Pinduoduo2 {
    /**
     * 
     * @param args
     */

    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int res = n;
        for (int i = 0; i < k; i++){
            int tmp = sc.nextInt();
            tmp = n - tmp;
            res = res - tmp;

        }
        if (res < 0)
            res = 0;
       System.out.println(res);

    }
}

猜你喜欢

转载自blog.csdn.net/qq_37886086/article/details/89921189
今日推荐