题目描述
这是一题简单的加法题然后我不会做TAT
区别以往不同的是他可能数据很大,所以叫高精度吧
样例
1000000+10000000=?
算法1
利用动态数组
代码如下
include[HTML_REMOVED]
include[HTML_REMOVED] %这里是库
using namespace std;
typedef long long ll;
vector[HTML_REMOVED] add(vector[HTML_REMOVED]&A,vector[HTML_REMOVED]&B)
{
if (A.size() < B.size()) return add(B,A); %这里是使左边的数字长度大于右边
int t = 0;
vector[HTML_REMOVED] C;
for(int i = 0 ; i < A.size();i++)
{
t += A[i];
if(i < B.size()) t+= B[i];
C.push_back(t%10); %这里是该位数的值
t/=10; %检验是否要进位,也就是进位的值
}
if(t) C.push_back(t); %进位
return C; %返回计算完的数字
}
int main()
{
string a,b;
cin >> a >>b; %输入以字符串为形式的数字
vector[HTML_REMOVED]A,B,C; %创建动态数组
for(int i = a.size()-1;i>= 0; i--)A.push_back(a[i]-'0');
for(int i = b.size()-1;i>= 0; i--)B.push_back(a[i]-'0'); %将那些数值反向录入数组中
C = add(A,B); %调用
for(int i = C.size()-1;i>= 0; i--)cout << C[i]; %因为前面方向录入所以这里反向输出
cout << endl;
return 0;
}
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
这是什么莎尼奥玩意
参考文献
C++ 代码
blablabla