看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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--) sum *= j; printf("\n%d!=%3d\n",i,sum); sum= 1; system("PAUSE"); return 0; } 想要寫出判斷 判斷非0的值的位置是在哪?? 輸入3得到6的值 等於 1 輸入5得到120的值 等於 2 找出非0的位置,想說用陣列去表達,但是不是這麼一回事!! 所以上發問求解~'~,thx 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.10.87 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1398010240.A.24E.html
kattte:不太懂你的意思 04/21 05:20
kattte:如果把整數轉成字串一個一個比 這樣可以嗎? 04/21 05:27
kattte:6=>1,120=>2 所以6有1個不是0,120兩個不是 0 ? 04/21 05:41
kattte:還是 120 => 021 => 第2個是0 ? 04/21 05:51
kattte: 不是 04/21 05:52
EdisonX:@kattte 經典題, 要找階層一個非零位數 04/21 10:07
kattte:我知道了@@ 04/21 11:04
kattte:輸入3 應該是得到6 等於6吧 04/21 11:06
EdisonX:3!=6,6是第一個非零位數…5!=120,第一個非零位數變第2位 04/21 12:20
EdisonX:這題其實就是求,N!尾數有幾個0,用這找還蠻多的 04/21 12:24
EdisonX:用不到陣列或大數就算得出來 04/21 12:26
kattte:感謝EdisonX的解釋 :D 04/21 13:02
AndyLeo:直接算出答案然後轉成字串是很直觀的解法 04/21 13:20
AndyLeo:但是考慮到階層的數字成長太迅速,應該有更好的解法 04/21 13:21
AndyLeo:例如判斷每個數字包含幾個2或5的因數算出答案有幾個10 04/21 13:22
CaptainH:記住第一位非零數, 再乘上階層的數字即可 04/21 13:58