[问题] 判断输出数字的问题

楼主: APE36 (PT乡民)   2014-04-21 00:10:38
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Dev-C
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
喂入的资料(Input):
3
5
预期的正确结果(Expected Output):
6
120
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,sum = 1;
printf("===数阶运算===\n\n");
printf("请输入数字:");
scanf("%d",&i);
for(j=i;j>0;j
作者: kattte (诚实面对自己吧!)   2014-04-21 05:20:00
不太懂你的意思如果把整数转成字串一个一个比 这样可以吗?6=>1,120=>2 所以6有1个不是0,120两个不是 0 ?还是 120 => 021 => 第2个是0 ?不是
作者: EdisonX (卡卡兽)   2014-04-21 10:07:00
@kattte 经典题, 要找阶层一个非零位数
作者: kattte (诚实面对自己吧!)   2014-04-21 11:04:00
我知道了@@输入3 应该是得到6 等于6吧
作者: EdisonX (卡卡兽)   2014-04-21 12:20:00
3!=6,6是第一个非零位数…5!=120,第一个非零位数变第2位这题其实就是求,N!尾数有几个0,用这找还蛮多的用不到阵列或大数就算得出来
作者: kattte (诚实面对自己吧!)   2014-04-21 13:02:00
感谢EdisonX的解释 :D
作者: AndyLeo (打败超越一切的人)   2014-04-21 13:20:00
直接算出答案然后转成字串是很直观的解法但是考虑到阶层的数字成长太迅速,应该有更好的解法例如判断每个数字包含几个2或5的因子算出答案有几个10
作者: CaptainH (Cannon)   2014-04-21 13:58:00
记住第一位非零数, 再乘上阶层的数字即可

Links booklink

Contact Us: admin [ a t ] ucptt.com