// 高精度乘以低精度 模板 inline string mul(string A,int x) { vector<int>a; // 取出每一位 int len = A.size(); // 倒着取每一位,方便低位到高位的计算
for(int i = len - 1;~i;--i) a.emplace_back(A[i] - '0');
vector<int>tem; // 存储计算结果 int t = 0; // 存储临时进位数 for(int i = 0;i < len;++i) { int num = t + a[i] * x; // 开始每一位相乘 tem.emplace_back(num % 10); // 取计算结果个位 t = num / 10; // 计算进位 }
// 高精度加法模板 inline string ADD(string A,string B) { vector<int>a,b; int alen = A.size(); int blen = B.size();// 倒着取每一位,方便低位到高位的计算 for(int i = alen - 1;~i;--i) a.emplace_back(A[i] - '0'); for(int i = blen - 1;~i;--i) b.emplace_back(B[i] - '0');
vector<int>tem; // 存储计算结果 int t = 0; // 存储临时进位数 for(int i = 0;i < alen or i < blen;++i) { int num = t; // 开始每一位相加 if(i < alen) num += a[i]; if(i < blen) num += b[i]; tem.emplace_back(num % 10);// 取计算结果个位 t = num / 10;// 计算进位 }
// 高精度乘以低精度 模板 inline string mul(string A,int x) { vector<int>a; // 取出每一位 int len = A.size(); // 倒着取每一位,方便低位到高位的计算
for(int i = len - 1;~i;--i) a.emplace_back(A[i] - '0');
vector<int>tem; // 存储计算结果 int t = 0; // 存储临时进位数 for(int i = 0;i < len;++i) { int num = t + a[i] * x; // 开始每一位相乘 tem.emplace_back(num % 10); // 取计算结果个位 t = num / 10; // 计算进位 }
string ans = ""; // 存储最后计算结果 // 将结果转回为 string ,并返回结果 int temlen = tem.size(); for(int i = temlen - 1;~i;--i) ans += char(tem[i] + '0'); return ans; }
// 高精度加法模板 inline string ADD(string A,string B) { vector<int>a,b; int alen = A.size(); int blen = B.size();// 倒着取每一位,方便低位到高位的计算 for(int i = alen - 1;~i;--i) a.emplace_back(A[i] - '0'); for(int i = blen - 1;~i;--i) b.emplace_back(B[i] - '0');
vector<int>tem; // 存储计算结果 int t = 0; // 存储临时进位数 for(int i = 0;i < alen or i < blen;++i) { int num = t; // 开始每一位相加 if(i < alen) num += a[i]; if(i < blen) num += b[i]; tem.emplace_back(num % 10);// 取计算结果个位 t = num / 10;// 计算进位 }