#include <stdio.h> #include <stdlib.h> #define M 100 int main() { int m,n; while (scanf("%d", &m) != EOF) { // 注意 while 处理多个 case // 64 位输出请用 printf("%lld") to scanf("%d",&n); int*arr=(int*)malloc(sizeof(int)*n); for(int i=0;i<n;i++)scanf("%d",arr+i); int dp[M+1]; for(int i=0;i<M;i++)dp[i]=-1; dp[0]=0; for(int i=0;i<n;i++){ for(int j=M;j>=arr[i];j--){ if(j>=arr[i]&&dp[j-arr[i]]!=-1){ int temp=dp[j-arr[i]]+1; if(dp[j]==-1||dp[j]>temp)dp[j]=temp; } } } printf("%d\n", dp[m]!=-1?dp[m]:0); free(arr); } return 0; }