蓝桥杯-乘积尾零

/*求相乘后尾部有多少个零(乘积尾零)*/
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));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值