vector<int> dp(1000001); void helper(int n = 1000000) { dp[1] = 0; dp[2] = 1; for (int i = 3; i <= n; ++i) { dp[i] = 1 + dp[i - 1]; for (int j = 2; j * j <= n; ++j) { if (i % j == 0) dp[i] = min(dp[i], dp[i / j] + dp[j] + 1); } } } int main() { helper(); int n; cin >> n; int ret = 0; int temp; for (int i = 0; i < n; ++i) { cin >> temp; ret += dp[temp]; } cout << ret << endl; return 0; }
点赞 1

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务