给出一个n*n的数字矩阵,现在要从(1,1)点走到(n,n)点,每一步只能朝下或者朝右走,在走的过程中要将经过格子的数字累乘起来,并使得这个累乘数值末尾0的数量尽可能的少。编程计算乘积末尾0个数的最小值。
输入格式
输入文件名:ju.in
第一行为正整数t(≤5),表示数据组数;每组数据中,第一行为正整数n(≤500),接下来是n*n的数字矩阵,每个元素aij不超过109。
输出格式
输出文件名:ju.out
对于每组数据,输出乘积末尾0个数的最小值。
输入/输出例子1
输入:
2
3
1 2 3
4 5 6
7 8 9
5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 10
输出:
0
2
d代码中给出注释
#include <cstdio>
#include <cstring>
const int N=505;
int g[N][N];
int dp[N][N][2];
int two[N][N], five[N][N];
inline int mn(int a, int b)
{
return a>b ? b : a;
}
inline void in(int &x)
{
char c=getchar();
while (c