大整數的加減乘除取模

2022-05-13 17:07:38 字數 2315 閱讀 9312

#include #include using namespace std;

inline int compare(string str1, string str2)

//高精度加法

string add_int(string str1, string str2)

else

}else else

int int1 = 0, int2 = 0; //int2 記錄進製

for(i = str1.size() - 1; i >= 0; i--)

if(int2 != 0) str = char(int2 + 48) + str;}}

//運算後處理符號位

if((sign == -1) && (str[0] != '0'))

str = "-" + str;

return str;

}//高精度減法

string minus_int(string str1, string str2)

string::size_type tempint;

tempint = str1.size() - str2.size();

for(int i = str2.size() - 1; i >= 0; i--)

else

str = char(str1[i + tempint] - str2[i] + 48) + str;

}for(int i = tempint - 1; i >= 0; i--)

str = str1[i] + str;

}//去除結果中多餘的前導0

str.erase(0, str.find_first_not_of('0'));

if(str.empty()) str = "0";

if((sign == -1) && (str[0] != '0'))

str = "-" + str;

return str;

}//高精度乘法

string multiply_int(string str1, string str2)

if(str2[0] == '-')

int i, j;

string::size_type l1, l2;

l1 = str1.size(); l2 = str2.size();

for(i = l2 - 1; i >= 0; i --)

if(int2 != 0) tempstr = char(int2 + 48) + tempstr;

}str = add_int(str, tempstr);

}//去除結果中的前導0

str.erase(0, str.find_first_not_of('0'));

if(str.empty()) str = "0";

if((sign == -1) && (str[0] != '0'))

str = "-" + str;

return str;

}//高精度除法

string divide_int(string str1, string str2, int flag)

if(str1 == "0")

if(str1[0] == '-')

if(str2[0] == '-')

int res = compare(str1, str2);

if(res < 0) else if(res == 0) else }}

residue = tempstr;

}//去除結果中的前導0

quotient.erase(0, quotient.find_first_not_of('0'));

if(quotient.empty()) quotient = "0";

if((sign1 == -1) && (quotient[0] != '0'))

quotient = "-" + quotient;

if((sign2 == -1) && (residue[0] != '0'))

residue = "-" + residue;

if(flag == 1) return quotient;

else return residue;

}//高精度除法,返回商

string div_int(string str1, string str2)

//高精度除法,返回餘數

string mod_int(string str1, string str2)

int main()

cout << res << endl;

}return(0);

}

大整數加減乘除(樸素版)

思路見注釋。include include includeusing namespace std int cmp string a,string b 兩個正整數相加 string add string a,string b reverse a.begin a.end 逆轉回正常的數字 return ...

大整數的加減乘除求餘

include include define n 50 n是計算的位數 class integer 大整數類 過載建構函式 友元函式實現運算子過載 friend integer operator integer integer friend integer operator integer int ...

大數(高精度)加減乘除取模運算

千辛萬苦找到了大數 高精度 加減乘除取模運算的演算法,有的地方還需要再消化消化,先貼出來 include include using namespace std inline int compare string str1,string str2 高精度加法 string add int strin...