1024!结果末尾有多少个0?c++

fuyu0707 2011-03-22 02:02:55
求1024!结果末尾有多少个0;哪 位高手用c++写一下吧!
...全文
684 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
mdc9 2012-12-07
  • 打赏
  • 举报
回复
引用 11 楼 fancyivan 的回复:
C/C++ code?1234567891011121314151617181920212223242526272829303132int fun(int m){ int i = 0; int j = 0; int k = 0; for(i = 1; i <= m; i++) { k = i; while(k > ……
li_stayhere 2012-04-16
  • 打赏
  • 举报
回复
“弱弱地算了一下,1024/5 + 1024/25 + 1024/125 + 1024/625”这个是对的,计算步骤如下:首先考虑有几个5,1024/5=204个。那么,为什么还要算1024/25呢?因为25*4或25*2*12会有两个0、100也有2个0,因为已经在1024/5中算过一次了,所以此处只加一次。同理,125有3个0,625有4个0。相加共253个0。
adventurelw 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zjs100901 的回复:]

弱弱地算了一下,1024/5 + 1024/25 + 1024/125 + 1024/625
[/Quote]
支持这个!
  • 打赏
  • 举报
回复
int j=0;//只要有一个因子5就有一个0
for( int i = 1; i <=13; i++)
{
if(i % 5 == 0)
{
j++;
}
}
ameyume 2011-03-22
  • 打赏
  • 举报
回复
学习,太高深了,谁能讲讲原理啊?
AAA20090987 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zjs100901 的回复:]
弱弱地算了一下,1024/5 + 1024/25 + 1024/125 + 1024/625
[/Quote]

好方法,呵呵
记得有这样的一道ACM题
bosslichuan 2011-03-22
  • 打赏
  • 举报
回复
int j=0;//只要有一个因子5就有一个0
for( int i = 1; i <=13; i++)
{
if(i % 5 == 0)
{
j++;
}
}
wjdwsjwjh 2011-03-22
  • 打赏
  • 举报
回复
LZ204个,LS5个
wbruce 2011-03-22
  • 打赏
  • 举报
回复
看《编程之美》
xiaozhuhaoa 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pengzhixi 的回复:]
int fun(int n)//n为1024
{
int num = 0;

while(n)
{
num += n / 5;
n = n / 5;
}

return num;
}
[/Quote]

却是很聪明的思想
fancyivan 2011-03-22
  • 打赏
  • 举报
回复

int fun(int m)
{
int i = 0;
int j = 0;
int k = 0;
for(i = 1; i <= m; i++)
{
k = i;
while(k > 0)
{
//如果以0结尾,还得进一步判断它的上一位是0还是5
if((k % 10) == 0)
{
j++;
}
//如果以5结尾
if((k % 10) == 5)
{
j++;
break;
}
k = k / 10;
}
}
return j;
}

int main()
{
printf("Hello world, %d!\n", fun(1024));
return 0;
}
fancyivan 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hnuqinhuan 的回复:]

看有几个五
C/C++ code

int ret = 0;
whhile(N)
{
ret += N/5;
N /= 5;
}
[/Quote]

25!结果末尾会有几个0?
無_1024 2011-03-22
  • 打赏
  • 举报
回复
看有几个五

int ret = 0;
whhile(N)
{
ret += N/5;
N /= 5;
}
hurongfz 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lthyxy 的回复:]

看有几个5.
[/Quote]
参考了2楼的方法。的确算有多少人5比算多少个10容易多了。而且2一定比5多所以每个5一定都会最后结果的末尾增加一个0。下面是我的代码,结果是253个0.
int GetLastZeroCnt(int value)
{
int ret = 0;
for (;value!=0;value--)
{
int temp = value;
while (0==(temp%5))
{
ret++;
temp /= 5;
}
}
return ret;
}

int main()
{
int ret = GetLastZeroCnt(1024);
printf("%d\n", ret);
}
software工程师 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lthyxy 的回复:]
看有几个5.
[/Quote]
才鸟求问~
cauiot 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lthyxy 的回复:]

看有几个5.
[/Quote]
聪明
fancyivan 2011-03-22
  • 打赏
  • 举报
回复
int i = 0;
int j = 0;
int k = 0;
for(i = 0; i < 1025; i++)
{
k = i;
while(k > 0)
{
if(((k % 10) == 0) ||((k % 10) == 5))
{
j++;
}
k = k / 10;
}
}

printf("%d", j);
zjs100901 2011-03-22
  • 打赏
  • 举报
回复
弱弱地算了一下,1024/5 + 1024/25 + 1024/125 + 1024/625
pengzhixi 2011-03-22
  • 打赏
  • 举报
回复
int fun(int n)//n为1024
{
int num = 0;

while(n)
{
num += n / 5;
n = n / 5;
}

return num;
}


liutengfeigo 2011-03-22
  • 打赏
  • 举报
回复
看有几个5.
加载更多回复(1)

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧