求2013阶乘结果的六进制表示法尾部包含0的个数
分析:2013!的六进制表示法尾部包含的0的个数意味着其因数分解中包含6的个数;
比如6!=6*5*4*3*2*1=(720)10进制=(3200)6进制,可见尾部包含2个0;
深入分析:6=2*3,所以凡是因数分解中包含6的数一定能将6进一步分解为2和3,且2、3为质因数;
所以,可以遍历1-2013的每个数N,求得所有N的质因数分解中包含的3的个数count,然后累加所有count即为最后结果。
代码如下:
int count_three(int N)
{
int count=0;
while(N%3==0)
{
count++;
N /= 3;
}
return count;
}
int sum_2013()
{
int i,sum=0,m=2013;
for(i=1;i<=m;i++)
{
sum+=count_three(i);
}
return sum;
}

浙公网安备 33010602011771号