大數系列 大數加法

2021-07-17 00:04:25 字數 1632 閱讀 4479

這幾天專門學習了一下大數的有關計算方法,大數加減乘除模都會在後面講到。

一、大數加法:

加法算是最簡單的一類大數問題,先寫上我的**:

#include#includeusing namespace std;

char num1[111], num2[111], num3[111];

int l, m;

int mark;

void add(char a, char b, char c)//把輸入的兩個大數都逆序排列,這個迴圈很常見,可以專門寫乙個函式。

for(i = 0; i < len2/2; i++)

for(i = 0; i < len1 && i < len2; i++)//m是代表這一位的數,l是代表這一位兩數相加後的十位數,也就是進製數的大小

if(i < len1)

} if(i < len2)

} while(l)//最後一位的進製不要忘記

mark = i-1;

}//這個方法比較常見,最好要牢牢掌握

/*while(len1 >= 0 && len2 >= 0)

while(len1 >= 0)

while(len2 >= 0)

while(l)

for(i = 0; i < l/2; i++)

for(i = 0; i < l; i++)

printf("%c",c[i]);*/

int main()

1、用現在的方法而不用我之前的方法是因為現在這個方法靈活性更強,它可以把結果儲存在相加的兩個字串的任意乙個裡,我之前的方法,是沒有逆序排列的,所以說,這意味著只能先求出字串長度len,再從len-1到0來逐位相加,這樣我們就必須把相加的結果儲存在第三個字串裡,浪費了記憶體。

2、用現在的方法,稍加修改,便可以實現連續多個大數相加。

多個大數連續相加**如下:

#include#includeusing namespace std;

char num1[111], num2[111], num3[111];

int l, m;

int mark;

void reverse(char a)

}void add(char a, char b, char c)

if(i < len1)

} if(i < len2)

} while(l)

mark = i-1;

}int main()

for(i = 0; i <= mark; i++)

printf("%c",num2[i]);

printf("\n");

return 0;

}

加法就寫到這裡。

大數加法,大數乘法

include include include typedef struct node pnode 函式宣告 int multiply char strmultipliera,char strmultiplierb,char strrst pnode initlist char strmultipl...

大數乘法 大數加法實現

include include include include include include include include using namespace std 實現兩個數的加法 判斷乙個字串是否為有效的數 bool isvalidnumber const string s if 1 len ...

大數運算 加法

include include include void add const char a,const char b,char c if carry 0 result result length carry 0 while result length 0 c result result length...