[問題] 判斷輸出數字的問題

作者: 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