1.求N的阶乘(10000以内的整数)数组实现
MOD数的设定与N的范围有关N最大为10^4 ,所以MOD设定10^5,相乘最大不超过九位
0!=0 printf("%05d ",g[i]);

//计算 N! 30 #include<iostream> #include<cstring> using namespace std; const int maxn=20000; int n,c,k,i,j; int f[maxn+1]; int main() { while(cin>>n){ if(n==0){ cout<<0<<endl; continue; } memset(f,0,sizeof(f)); f[0]=1; for(i=1;i<=n;i++){ c=0;//表示进位 for(j=0;j<=maxn;j++){ f[j]=f[j]*i+c; c=f[j]/100000; f[j]=f[j]%100000; } } for(k=maxn;k>=0;k--) if(f[k]!=0) break; cout<<f[k]; for(j=k-1;j>=0;j--) printf("%05d",f[j]);//5位的数字不足前面添0 cout<<endl; } }
1000的阶乘结果:

402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188 73251977950595099527612087497546249704360141827809464649629105639388743788648733711918104582578364784997701247663288983595573543251318532395846307555740911426241747434934755342864657661166 779739666882029120737914385371958824980812686783837455973174613608537953452422158659320192809087829730843139284440328123155861103697680135730421616874760967587134831202547858932076716913244 842623613141250878020800026168315102734182797770478463586817016436502415369139828126481021309276124489635992870511496497541990934222156683257208082133318611681155361583654698404670897560290 095053761647584772842188967964624494516076535340819890138544248798495995331910172335555660213945039973628075013783761530712776192684903435262520001588853514733161170210396817592151090778801 939317811419454525722386554146106289218796022383897147608850627686296714667469756291123408243920816015378088989396451826324367161676217916890977991190375403127462228998800519544441428201218 736174599264295658174662830295557029902432415318161721046583203678690611726015878352075151628422554026517048330422614397428693306169089796848259012545832716822645806652676995865268227280707 578139185817888965220816434834482599326604336766017699961283186078838615027946595513115655203609398818061213855860030143569452722420634463179746059468257310379008402443243846565724501440282 188525247093519062092902313649327349756551395872055965422874977401141334696271542284586237738753823048386568897646192738381490014076731044664025989949022222176590433990188601856652648506179 970235619389701786004081188972991831102117122984590164192106888438712185564612496079872290851929681937238864261483965738229112312502418664935314397013742853192664987533721894069428143411852 015801412334482801505139969429015348307764456909907315243327828826986460278986432113908350621709500259738986355427719674282224875758676575234422020757363056949882508796892816275384886339690 995982628095612145099487170124451646126037902930912088908694202851064018215439945715680594187274899809425474217358240106367740459574178516082923013535808184009699637252423056085590370062427 12434169090041536901059339838357779394109700277534720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
2.