#include #include #include bool is_prime(int n, std::vector primes) { for (int i = 0; i < primes.size(); i++) { if (n % primes[i] == 0) return false; } return true; } void prime_list(int n, std::vector &primes) { if (n == 1) return; primes.push_back(2); if (n == 2) return; primes.push_back(3); for (int i = 5; i <= n; i += 2) { if (is_prime(i, primes)) { primes.push_back(i); } } } int main() { int m, n; std::cin >> m >> n; std::vector item(n); for (int i = 0; i < n; i++) { std::cin >> item[i]; } // dp[i] = i円で購入できるカップ麺の最大個数 int dp[10000 + 1] = { 0 }; for (int i = 0; i < n; i++) { dp[item[i]] = 1; } for (int i = 0; i < n; i++) { for (int j = 0; j <= m; j++) { if (dp[j] > 0 && j + item[i] <= m) { dp[j + item[i]] = std::max(dp[j] + 1, dp[j + item[i]]); } } } std::vector primes; prime_list(m, primes); //for (int i = 0; i <= m; i++) { // std::cout << i << " "<