求N的阶乘N!末尾有多少个零
解法1:
int foo(int n)
{
int count = 0;
for(int i=1; i<=n; ++i)
{
int t=i;
while(t%5==0)
{
++count;
t/=5;
}
}
}
解法2:
int foo(int n)
{
int count = 0;
while(n)
{
n /= 5;
count += n;
}
}
相关问题1:求N!的二进制表示种最低位1的位置
解法1:
int foo(int n)
{
int count = 0;
while(n)
{
n /= 2;
count += n;
}
}
解法2:
int foo(int n)
{
int v=n;
int num = 0;
while(v)
{
v &= (v-1);
++num;
}
return n-num;
}
相关问题2:判断n是否为2的方幂
bool foo(int n)
{
return (n & (n-1)) == 0;
}