1樓:假面
程式設計輸入n(n<=1000),求n的階乘值(n!)尾部有5個連續的0。
集體過程如下:
int c10, c5, c2; //分別是10、5、2的個數for(int i=2;i<=n;i++) {int x=i;
while( x%10==0 ) {
c10++;
x/=10;
while( x%5==0 ) {
c5++;
x/=5;
while( x%2==0 ) {
c2++;
x/=2;
return c10 + (c5
2樓:匿名使用者
等價於n!含有多少個素因數5
p()表示取整,即p(1.25)=1。
p(n/5)+p(n/25)+p(n/125)+p(n/625)+ ... +p(n/p(log5(n)))
3樓:小狂中
int c10, c5, c2; //分別是10、5、2的個數for(int i=2;i<=n;i++)while( x%5==0 )
while( x%2==0 )
}return c10 + (c5
、程式設計輸入n(n<=1000),求n的階乘值(n!)尾部有多少個連續的0。如輸入10,則輸出2,因為10!=3628800
4樓:溜鬚拍馬關雲長
階乘時,只有5的倍數才會產生0,故
n=99999;
sum=0;
for i:=0 to n step 5 do beginsum=sum+1;
end;
5樓:匿名使用者
用c語言就會,pascal就沒學過。
求n的階乘值(n,)尾部有多少個連續的0
6樓:匿名使用者
很簡單,先尋找這個數其中有多少個五的倍數,和偶數。偶數不用說有很多,然後尋找5的倍數時要注意25,125……這些數中含有幾個5有一個5就有一個0
求n的階乘值(n,)尾部有多少個接續的0
7樓:匿名使用者
依次除以因數5、5²、5³、...5的多次方,不超過n
再把所有的整數商相加
如何用c++程式設計階乘尾數零的個數,n!末尾有多少個零
8樓:匿名使用者
乘積末尾的0的個數依賴於因子中的2的個數和5的個數。對於階乘來說,每2個數字就至少有一個2的因子,所以2的因子是足夠的。5的因子相對少些,至少連續5個數才能保證一定出現一個。
注意,這裡連續5個書保證出現一個5的因子是指最少的情況。比如1,2,3,4,5,這就只會出現一個。但是考慮 21,22,23,24,25,25 = 5 * 5,所以如果乘以25那就能得到2個5的因子。
#include
using namespace std;
int main(void)
cout<< zerocnt< return 0; 9樓:匿名使用者 #include using namespace std; int main() cout<<"the number of zero is "< return 0; }統計1-n中所有數含有因子5的個數之和,因為只有2和5相乘才會得到一個0,而因子2出現的次數遠比5多,所以5的個數決定了0的個數 ps:樓上好像不對,如果125呢,有3個5,625呢。。。你好像都沒考慮 10樓:孟羽然 tian20090730 的思路很正確,完全同意!但他的**似乎有些問題。 看看我的**吧,這個應該是正解了。採納吧,嘿嘿。 #include using namespace std; int main() while (n > 0) // 跳到下一個5的倍數處理 n -= 5; }cout << factor5_count << endl; return 0;} 11樓:匿名使用者 為了解決這個問題,必須首先從數學上分析在n!結果值的末尾產生零的條件。不難看出: 一個整數若含有一個因子5,則必然會在求n!時產生一個零。因此問題轉化為求1到n這n個整數中包含了多少個因子5。 若整數n能被25整除,則n包含2個因子5;若整數n能被5整除,則n包含1 個因子5。 *程式說明與註釋 #include using namespace std; int main() cout<<"the number of 0 in the end of n! is:"< return 0;} 求c語言高手,我想編一個程式,求n的階乘然後算出這個n的階乘這個值中有多少個0,我編了一個程式如下。 12樓:老猿 1、s這個緩衝區太大,作為儲存整數的輸出,用1024足夠; 2、你的輸入資料的處理語句和輸入的提示順序反了,應該先提示後輸入; 3、後一段邏輯沒明白你的意思,前面都計算出來了,為什麼還要輸入?直接sprintf(s,"%d",n)不就可以轉成字串了嗎? 4、變數count = 0,i = 0, p,n,t;建議使用整型。 求c語言高手,我想編一個程式,求n的階乘然後算出這個n的階乘這個值中有多少個0,我編了一個程式如下 13樓: 我有個辦法你算出n的階乘n; 然後while(n) 迴圈做完後,得到的k即為0的個數,依次可以推廣到0-9中任何數字的個數! 14樓:匿名使用者 float k=1; printf ("你想要算多少的階乘\n"); scanf ("%d", &n); for (t = 1;t <= n; t++)printf ("他的值為%d", n); printf ("請輸入n的值\n");//這裡要手動輸入結果的值,不好 while ((scanf("%c", s[i])) !='\n')//每次讀入了兩個值,改:do }while(s[i]!='\n'); p = strlen (s); for (i = 0;i < p; i++)printf ("其中有%d個零", count); 15樓: 把階乘想成質因數相乘的形式,每有一個因數5,結果必有1一個0,每5個數就有1個5,每逢25個數就有2個5,但是其中一個5已經在前面每5個數中算過了,此時就可以計為1個5,每逢125有3個5,其中一個在每5個計過,一個在每25計過,所以還是增加一個5........ 整理n!中5的個數即可 16樓:匿名使用者 #include void main() printf("%d! has %d zeros\n", num, count);} 17樓:匿名使用者 編譯器沒告訴你哪兒錯了嗎? c語言程式設計題(階乘+尾數幾個零) 18樓:匿名使用者 #include void main() i++; if(b%i==0) j++; }for(i=2;i<=n;i++) for(k=0;k<=j;k++) for(i=1;i if(yinzinum[i] min=yinzinum[i]; cout< 限於整型資料的資料範圍,所以實際上這個程式只能求n 12的情況。如果想求更大的,必須為這個階乘自定義一個資料型別。includeusing namespace std int fact int n int main 下面是使用遞迴函式求n!int fact int n 一個簡單的c 程式設計例子 定... include void main printf d sum include void main 注意,不要輸入太大的數,不然結果就不對了,要想輸入套數,就把int 改成long int吧,不過,還是不能太大 敢問這個有錯麼?include int main sum 200 i,j,k 0,l 0,... 做個雙層 du迴圈就好了,include int main int argc,char argv return 0 main include include main getch return 0 c語言程式設計問題,求大神指教 編寫程式,輸入兩個正整數m和n,求 i i 1 i 求和符號下面 i ...c 程式設計題編寫函式實現求n!,主程式要求輸入n的值,用函
編寫程式求S 1 2 3N其中N為從鍵盤輸入的任意自然數)
C語言,求指教!輸入整數m,n。輸出m行n列的圖案。請問應該怎麼寫程式。謝謝