/*求相乘后尾部有多少个零(乘积尾零)*/
public class Multiply {
public static void main(String[] args) {
int[] arr = {5650, 4542, 3554, 473, 946, 4114, 3871, 9073, 90, 4329,
2758, 7949, 6113, 5659, 5245, 7432, 3051, 4434, 6704, 3594,
9937, 1173, 6866, 3397, 4759, 7557, 3070, 2287, 1453, 9899,
1486, 5722, 3135, 1170, 4014, 5510, 5120, 729, 2880, 9019,
2049, 698, 4582, 4346, 4427, 646, 9742, 7340, 1230, 7683,
5693, 7015, 6887, 7381, 4172, 4341, 2909, 2027, 7355, 5649,
6701, 6645, 1671, 5978, 2704, 9926, 295, 3125, 3878, 6785,
2066, 4247, 4800, 1578, 6652, 4616, 1113, 6205, 3264, 2915,
3966, 5291, 2904, 1285, 2193, 1428, 2265, 8730, 9436, 7074,
689, 5510, 8243, 6114, 337, 4096, 8199, 7313, 3685, 211};
int count1 = 0;//统计分解出来2的个数
int count2 = 0;//统计分解出来5的个数
for(int i = 0; i < arr.length; i++) {
/*只有2*5才能产生0,所以将arr[i]中的2和5分解出来
* 最后有多少个2*5取决于少的那个数。例如5650可以分解成113*2*5*5,
* 将全部的数都分解成这个样子,统计有多少个2*5即可*/
while(arr[i] % 2 == 0) {//分解成一个不能整除2的数和n个2相乘
arr[i] = arr[i]/2;
count1++;
}
while(arr[i] % 5 == 0) {//分解成一个不能整除5的数和n个5相乘
arr[i] = arr[i]/5;
count2++;
}
}
System.out.println(Math.min(count1, count2));
}
}
蓝桥杯-乘积尾零
于 2022-03-03 22:31:29 首次发布