/*
CodeForces 837D - Round Subset [ DP ] | Educational Codeforces Round 26
题意:
选k个数相乘让末尾0最多
分析:
第i个数字有a[i]个2, b[i] 个5
以其中一维作体积另一维作价值01背包即可
*/
#include <bits/stdc++.h>
using namespace std;
int dp[205][20005];
int get2(long long x)
{
int s = 0;
while (x % 2 == 0) s++, x /= 2;
return s;
}
int get5(long long x)
{
int s = 0;
while (x % 5 == 0) s++, x /= 5;
return s;
}
int n, k;
int main()
{
scanf("%d%d", &n, &k);
memset(dp, -1, sizeof(dp));
dp[0][0] = 0;
for (int i = 1; i <= n; i++)
{
long long x; scanf("%lld", &x);
int a = get2(x);
int b = get5(x);
for (int j = k; j >= 1; j--)
for (int p = a; p <= 20000; p++)
if (dp[j-1][p-a] != -1)
dp[j][p] = max(dp[j][p], dp[j-1][p-a] + b);
}
int ans = 0;
for (int i = 1; i <= 20000; i++)
if (dp[k][i] != -1)
ans = max(ans, min(i, dp[k][i]));
printf("%d\n", ans);
}

  

最新文章

  1. [c++] Pieces of knowledge
  2. java 用 jxl poi 进行excel 解析 *** 最爱那水货
  3. 文件I/O之fcntl函数
  4. Dremel made simple with Parquet
  5. openldap---ldapsearch使用
  6. 7.MyBatis延时加载
  7. Redis Cluster部署、管理和测试
  8. 软硬件协同编程 - C#玩转CPU高速缓存(附示例)
  9. 【BZOJ3997】[TJOI2015]组合数学(动态规划)
  10. vue开发常用配置
  11. java的this关键字理解
  12. Nancy in .Net Core学习笔记 - 初识Nancy
  13. 【学习笔记】tensorflow队列和线程
  14. c/c++ linux 进程间通信系列6,使用消息队列(message queue)
  15. windows下qt的.exe的dll文件怎么配齐
  16. 脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?
  17. python测试开发django-23.admin列表页优化和排序
  18. 目前主流的MQ
  19. java 数字转换成字符串
  20. 移动端混合开发----ionic

热门文章

  1. SpringCloud 教程 | 终章
  2. 常见的几种web攻击
  3. redis单机连接池
  4. 动态代理 aop切面实现事务管理
  5. 怎样理解在函数中声明var x = y = 1后调用函数时, x是局部变量, y是全局变量
  6. html中script标签使用async属性和defer属性的区别
  7. virtual和override
  8. 【web安全】浅谈web安全之XSS
  9. 题解 P3369 【【模板】普通平衡树(Treap/SBT)】
  10. Web框架概述——React.js