C語(yǔ)言計(jì)算大數(shù)階乘的方法
本文實(shí)例為大家分享了C語(yǔ)言計(jì)算大數(shù)階乘的具體代碼,供大家參考,具體內(nèi)容如下
問(wèn)題描述
輸入一個(gè)正整數(shù)n,輸出n!的值。
其中n!=1*2*3*…*n。
算法描述
n!可能很大,而計(jì)算機(jī)能表示的整數(shù)范圍有限,需要使用高精度計(jì)算的方法。使用一個(gè)數(shù)組A來(lái)表示一個(gè)大整數(shù)a,A[0]表示a的個(gè)位,A[1]表示a的十位,依次類(lèi)推。
將a乘以一個(gè)整數(shù)k變?yōu)閷?shù)組A的每一個(gè)元素都乘以k,請(qǐng)注意處理相應(yīng)的進(jìn)位。
輸入格式
輸入包含一個(gè)正整數(shù)n,n<=1000。
輸出格式
輸出n!的準(zhǔn)確值。
樣例輸入
10
樣例輸出
3628800
#include <stdio.h> #define N 10000 int main() { int a[N]={1}; int k=0,l=1,n; int i,j; scanf("%d",&n); for(i=1;i<=n;i++) { for(j=0;j<l;j++) { a[j]=a[j]*i+k; k=a[j]/10000; a[j]=a[j]%10000; } if(k) { a[j]=k; l++; k=0; } } printf("%d",a[l-1]); for(i=l-2;i>=0;i--) printf("%04d",a[i]); printf("\n"); return 0; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解C++值多態(tài)中的傳統(tǒng)多態(tài)與類(lèi)型擦除
值多態(tài)是一種介于傳統(tǒng)多態(tài)與類(lèi)型擦除之間的多態(tài)實(shí)現(xiàn)方式,借鑒了值語(yǔ)義,保留了繼承,在單繼承的適用范圍內(nèi),程序和程序員都能從中受益。這篇文章主要介紹了C++值多態(tài)中的傳統(tǒng)多態(tài)與類(lèi)型擦除,需要的朋友可以參考下2020-04-04c語(yǔ)言中回調(diào)函數(shù)的使用以及實(shí)際作用詳析
回調(diào)函數(shù)就是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù),如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來(lái)調(diào)用其所指向的函數(shù)時(shí),我們就說(shuō)這是回調(diào)函數(shù),這篇文章主要給大家介紹了關(guān)于c語(yǔ)言中回調(diào)函數(shù)的使用以及實(shí)際作用的相關(guān)資料,需要的朋友可以參考下2021-07-07一篇文章詳解Qt中如何訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)
Qt是一個(gè)廣泛使用的跨平臺(tái)應(yīng)用程序框架,它提供了許多功能,包括數(shù)據(jù)庫(kù)訪(fǎng)問(wèn),這篇文章主要給大家介紹了關(guān)于Qt中如何訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07C語(yǔ)言與C++項(xiàng)目實(shí)現(xiàn)相互調(diào)用
extern?“c”的作用可以實(shí)現(xiàn)c語(yǔ)言和c++相互調(diào)用,本文就詳細(xì)的介紹一下C語(yǔ)言與C++項(xiàng)目實(shí)現(xiàn)相互調(diào)用,感興趣的可以了解一下2022-01-01C語(yǔ)言實(shí)現(xiàn)快速排序的方法及優(yōu)化
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)快速排序的方法及優(yōu)化,快速排序是Hoare于1962年提出的一種二叉樹(shù)結(jié)構(gòu)的交換排序方法,下面我們來(lái)看一看傳說(shuō)中的快速排序的特點(diǎn)與效率怎么樣,需要的朋友可以參考下2023-07-07