D最后一组数据是啥,该代码本地测试错误为什么能过
#include <bits/stdc++.h> const int N = 2e3 + 10; long long a[N],dp[N]; int main() { long long n,m; std::cin >> n >> m; memset(dp,0x3f,sizeof dp); for(int i = 1; i <= n; i++) { std::cin >> a[i],dp[a[i]%m] = 1; } for(int i = 1; i <= n; i++) { for(int mod = m - 1; mod >= 0; mod--) { dp[mod] = std::min(dp[mod],dp[(mod - (a[i]%m) + m)%m] + 1); } } std::cout << dp[0] << std::endl; return 0; }
4 2000 1 3 5 2