千辛萬苦找到了大數(高精度)加減乘除取模運算的演算法,有的地方還需要再消化消化,**先貼出來~
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);
}
高精度運算模板(大數加減乘除模板)
1.高精度加法模板 計算a b,a與b長度均 1e6 include include using namespace std vector add vector a vector b if t c push back t returnc int main 2.高精度減法模板 計算a b,長度均小於1...
高精度系列運算(大數的加 減 乘 除)
高精度演算法將陣列的操作發揮至淋漓,是對各類模擬運算處理的細化考量,從模擬加法進製,小試牛刀,到減法中 大減小 模型的構造,從乘法的錯位運算,直到多法結合的高精度除法,只有踩過坑,才知曉細節挖掘的不易。全域性變數初始為空,多次輸入自行新增memset 加法 include include inclu...
大數高精度加減乘除模板
大數高精度加減乘除的模板 include include using namespace std inline int compare string str1,string str2 高精度加法 string add int string str1,string str2 else else els...