L1-100 四项全能
题目描述
新浪微博上有一个帖子给出了一道题:全班有 50 50 50 人,有 30 30 30 人会游泳,有 35 人会篮球,有 42 人会唱歌,有 46 人会骑车,至少有 () ( ) ()人四项都会。
发帖人不会做这道题,但是回帖有会做的:每一个才艺是一个技能点,一共是
30
+
35
+
42
+
46
=
153
30 + 35 + 42 + 46 = 153
30+35+42+46=153 个技能点,
50
50
50 个人假设平均分配,每人都会
3
3
3 个技能那也只有
150
150
150,所以至少有
3
3
3 人会四个技能。
本题就请你写个程序来自动解决这类问题:给定全班总人数为
n
n
n,其中有
m
m
m 项技能,分别有
k
1
、
k
2
、
…
…
、
k
m
k _1 、k_ 2 、……、k _m
k1、k2、……、km 个人会,问至少有多少人
m
m
m 项都会。
输入格式:
输入在第一行中给出 2 2 2 个正整数: n ( 4 ≤ n ≤ 1000 )和 m ( 1 < m ≤ n / 2 ) n(4≤n≤1000)和 m(1<m≤n/2) n(4≤n≤1000)和m(1<m≤n/2),分别对应全班人数和技能总数。随后一行给出 m m m 个不超过 n n n 的正整数,其中第 i i i 个整数对应会第 i i i 项技能的人数。
输出格式:
输出至少有多少人 m m m 项都会。
输入样例:
50 4
30 35 42 46
输出样例:
3
代码内容
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e6+10;
int main()
{
ll n,m;
cin>>n>>m;
ll nums=0;
ll k;
while(m--)
{
cin>>k;
nums+=k;
}
if(nums<n)//总技能点<全班人数
{
cout<<0<<endl;
return 0;
}
ll pos=nums/n;
ll index=nums-pos*n;
if(index==0) pos--;//刚好被整除,pos-1;
cout<<(nums-pos*n)<<endl;
return 0;
}