小博沉迷收集卡片,购买干脆面是他收集卡片的主要方式。他总共渴望的有 N 类卡片,均可通过购买干脆面获得,一包干脆面中有且仅有一张卡片,并且卡片类型对应N类卡片中的一种。且每 种类型的卡片出现在一包干脆面中的概率是相等的。
小博非常的贪心,他有 N 个愿望,第i个愿望即为:拥有至少 pi 张i类卡片,其中 1 ≤ i ≤ N。
然而,小博又极其贫困,他想知道最少需要买多少干脆面,使得在最坏情况下,至少能够满足他 N 个愿望的其中一个。
数据范围: ,
小博非常的贪心,他有 N 个愿望,第i个愿望即为:拥有至少 pi 张i类卡片,其中 1 ≤ i ≤ N。
第一行包含一个整数 N 。
第二行包含N个整数pi,pi表示小博希望至少拥有的i类卡片数量。。
输出一个整数ANS,小博可以完成至少一个愿望需要购买的最少的干脆面的数量。
3 8 6 9
21
2 3 5
7
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long sum = 0; for(int i = 0; i < n; i++) sum += sc.nextInt(); // 最坏情况:买了sum-n包仍然每种都还差一个,那么再买一包一定有一种卡片能够集齐 System.out.println(sum - n + 1); } }
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * @author wylu */ public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); long sum = 0; for (int i = 0; i < n; i++) sum += Integer.parseInt(br.readLine()); System.out.println(sum - (n - 1)); } }
#include<iostream> #include<vector> using namespace std; int main(){ long n; while(cin>>n){ vector<int>data(n); long sum=0; for(int i=0;i<n;i++){ cin>>data[i]; sum+=data[i]; } cout<<sum-n+1<<endl; } return 0; }//注意用long 用int只AC 90%
#include <iostream> using namespace std; int main(void) { int N; cin >> N; long long sum = 0; for (int i = 0; i < N; i++) { int temp; cin >> temp; sum += temp; } cout << sum - N + 1 << endl; return 0; }