张育玮 发表于 2022-5-28 15:09:06

这道题怎么做?

如图

傻眼貓咪 发表于 2022-5-28 15:44:02

至少 60% 数据 n <= 200
而 200 的乘积有 375 个数字,是个极大数值,一般方法行不通

jhq999 发表于 2022-5-28 19:55:20

本帖最后由 jhq999 于 2022-5-30 06:22 编辑


////先统计每个数末尾的0的个数,再统计去零后分解多少个5,在统计末尾不是0的偶数分解多少个2,比较5和2的个数取小值,加上前面统计的零的个数就是
//////6250 =》5*5*5*5*10 *2 *2*2*2=100,000
//////当然你也可以把10分解成2*5,但没有意义
/////还有这个样例很low
int count=0,numendis0=0,numendis2=0,numendis5=0,num=0;
for(i=0;i<n;i++)
{
       
                num=a;
                while(0==num%10)
                {
                        count++;
                        num/=10;
                }
                while(0==num%5)
                {
                        numendis5++;
                        num/=5;
                }
       
                while(0==num%2)
                {
                        numendis2++;
                        num/=2;
                }
                       
       
       
       
}
        count+=numendis2>numendis5?numendis5:numendis2;
页: [1]
查看完整版本: 这道题怎么做?