演算法筆記 大整數相加

2021-10-18 17:12:06 字數 830 閱讀 9242

大整數相加,這裡用string輸入,轉為int型別陣列存數,陣列低位存整數的低位(個位存在index=0的地方)

#include #include const int maxlen=10000;

struct bign

};void str2bign(char *str,int n,bign *bign)

return;

}void add_bign(bign *b1,bign *b2,bign *res)

if(carry!=0)

}int main();

char b[maxlen]=;

scanf("%s %s",a,b);

bign biga,bigb,res;

str2bign(a,strlen(a),&biga);

str2bign(b,strlen(b),&bigb);

add_bign(&biga,&bigb,&res);

for(int i=0;i1)對於減法轉化為大數減小數,乘除法轉化為正整數相乘除,再看要不要加負號

2)對於其他四則運算:

a.減法:若不夠減,高位減一,當前位加十,最後需要保證去除高位的0並至少保留最低位

while(c.len-1>=1 && c.d[c.len-1]==0)

c.len--;

b.乘法:大數中的每一位乘以int型別的另乙個乘數,個數保留,其餘高位除以10後作為進製,若最後進製不為0,迴圈儲存最後的進製(進製和加法的進製不一樣,可能不止一位)

d.除法:不夠除上0,餘數乘以10加上當前位,作為被除數,同減法,要去除高位的0

演算法 大整數相加

兩個36進製的大整數以字串的形式給出,求出兩個大整數的和,並以字串方式輸出。頭條面試題 比如 12346 gsftyhs gsgw1ly public class format36 public static string sum string num1,string num2 num2 sb.to...

大整數相加

include include include include 思路如下 將兩個字串分別由低位到高位放置到int陣列中 然後每位對齊相加,大於10,本位取餘,高位進1 char bigintadd const char numstr1,const char numstr2 for i len1 i ...

大整數相加

cpp view plain copy code class cpp include include include include 思路如下 將兩個字串分別由低位到高位放置到int陣列中 然後每位對齊相加,大於10,本位取餘,高位進1 char bigintadd const char numst...