1樓:午時茶
#include//萬能標頭檔案 using namespace std; int a[100000],n,i,y,xy[100000],s[100000];//s[0]和a[0]表示兩個陣列的長度 //s表示答案,a表示階乘,先算出階乘,放在a裡,再把s和它相加,更新s void add()//表示s=s+a while (xy[xy[0]+1]>0) //進位 s[0]=xy[0];//長度也要更新 for (i=1;i<=xy[0];i++) s[i]=xy[i];//將xy給s } int main()//愉快的開始了主程式 while (xy[xy[0]+1]>0)//進位 for (i=1;i<=xy[0];i++) a[i]=xy[i];//算出y!放入a內 a[0]=xy[0]; add();//進行高精度加法 } for (i=s[0];i>=1;i--) cout<
2樓:匿名使用者
//你的事大整數乘法嗎?下面是大整數乘法
#include
#include
using namespace std;
int* suma(int m,int n);
int* mul(int m,int e);
int main(void);
int n[max] = ;
int c[2*max] = ;
string a,b;
cin >> a;
int s = a.length();
cin >> b;
int k = b.length();
if(s>=k)
int z = 0;
while(c[z]==0)
for(int i = z;i<2*max;i++)}
c++高精度
3樓:匿名使用者
用檔案儲存,分段計算
4樓:理想之芽
之前有寫過一個用string實現的,很類似,你自己做轉換吧
c++階乘計算
5樓:天方之夜譚
這個問題可以這樣理解,數字是由表示數值的字元,和相應的一個排列組成的,而這個字元在通常情況下是由一個字元組成的,比如0~9,a~z,a~z,單是這種表示方法無論如何都是有限制的,因為人為創造的計算機用的單個字元是有限的。那麼可以用一個陣列表示一個數字,而陣列中的一個元素表示一個數字的字元,每個元素同樣可以使用一個陣列來表示,這樣迴圈下去,就成了一個無限大的數字了。但是這樣的數字,在計算過程中,需要自己去考慮符號、進位、借位、溢位、等計算問題。
你所給出的**就是一種這樣的表達形式。
將一個數表示為多個位陣列成的一個陣列(f),乘法按照由低位到高位,當前位(f[j])和某一數(i)相乘,得到一個結果(s),這個結果和當前位的最大值做除法,商為高一位的數值,也就是進位(c),餘數為此位的數值;此時如果高一位的數值仍然大於該位的最大值,繼續做除法,商為更高一位的數值,餘數(s%10)為該位的數值,以此類推。也就是內迴圈所表示的意思。
外迴圈所表示的就是從1開始連續做乘法,一直乘到n。
下邊那個迴圈是將結果輸出。
不過就目前看來你所給出的**,仍然有溢位的問題,最大隻能表示一個3000位的十進位制數字。
c++求大數的階乘要求精確值 5
6樓:匿名使用者
#include
void bigfactorial(int m);//第一位不用
int i,j,carry,k,tmp,lenth=1;//carry表示進位
for (i=2;i<=m;i++)
}printf("%d的階乘:\n 位數:%d\n ",m,lenth);
for(k=lenth;k>=1;k--)printf("%d",a[k]);
}int main()
7樓:匿名使用者
long int fun(int i)
return sum;}
PASCAL乘積最大高精度動態規劃寫法求高手查錯
const maxn 40 maxk 6 vari,j,l longint n,k longint s string f array 0.maxn,0.maxk of int64 a array 0.maxn,0.maxn of int64 begin readln n,k readln s fil...
高精度求組合數後10 位 15
高精度求組合數後10 位 n r分別代表什麼?你沒說清楚。0到9十個數字 的十位陣列合有多少种情況?最高位不能是0,所以最高位有9種組合。最高位佔了乙個數,其它位可以是0,所以第九位有9種組合前兩位佔了兩個數,所以第三位有8種組合。最後一位只剩下1個數,所以末尾只有1種組合所以共有9 9 8 7 6...
c語言大數階乘運算,C語言大數階乘運算
看灰過來了 include int main return 0 1 1 2 2 3 6 4 24 5 120 6 720 7 5040 8 40320 9 362880 10 3628800 11 39916800 12 479001600 13 6227020800 14 87178291200 ...