Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>using namespace std;typedef long long ll;int s;int dp[10050][250];int main(){ios::sync_with_stdio(false);int n,m;while(cin>>n>>m){memset(dp, 0x80, sizeof(dp));dp[0][0]=0;s=0;for(int i=1; i<=n; ++i) {ll p;int x=0, y=0;cin>>p;for(; !(p%5); p/=5)++x;for(; !(p%2); p/=2)++y;s+=x;for(int k=min(i, m); k>=1; --k)for(int j=s; j>=x; --j)dp[j][k]=max(dp[j][k], dp[j-x][k-1]+y);}int ans=0;for(int i=1; i<=s; ++i)ans=max(ans, min(i, dp[i][m]));