大數高精度加減乘除模板

2021-07-24 19:51:22 字數 2456 閱讀 6426

大數高精度加減乘除的模板

#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") //判斷被除數是否為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 include using namespace std const int power 1 每次運算的位數為10的power次方,在這裡定義為了方便程式實現 const int base 10 10的power次方。要壓位的時候,只需改power 和 base即可,如...

高精度 加減乘除 模板

例題 高精度加法 題目描述 給定兩個正整數,計算它們的和。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的和。資料範圍 1 整 數長度 100000 1 整數長度 100000 1 整數長度 100 000 輸入樣例 12 23輸出樣例 35c 版本一 include include...

高精度 加減乘除 模板

座位旁邊乙個同學,哼著歌,說著 要用高精度啊,好麻煩,不想寫啊啊啊,不想寫啊,不想寫啊 他的這首歌持續了大約6min,然後他的dev裡乙個漂亮的高精度運算 已經寫好了。看來大公尺餅也不能甘於落後啊,模板來啦 1 include2 include3 include4 define ll long lo...