C++ 代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N=110;
int a[N];
int main()
{
int n,m;
cin>>m>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);//先按面值从小到大排序
if(a[0]!=1) cout<<-1<<endl;
else
{
while(n>0&&a[n-1]>m) n--;//先去掉比m还大的面值
a[n]=m+1;
int res=0;
for(int i=0,s=0;i<n;i++)
{
int k=(a[i+1]-1-s+(a[i]-1))/a[i];//在分子中加上a[i]-1,相当于上取整了
res+=k;
s+=k*a[i];
}
cout<<res<<endl;
}
return 0;
}