原题
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.第一次输入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);
}
}