好难的题!!!(go头保命)
2025-08-18 11:44:23
发布于:上海
5阅读
0回复
0点赞
#include<bits/stdc++.h>
#define SIZE 500
using namespace std;
int a[SIZE],b[SIZE],c[SIZE];
void converts(int *a,string s){
reverse(s.begin(),s.end());
int i,len=s.size();
for(i=0;i<len;i++)a[i]=s[i]-'0';
}
void add(int *a,int *b,int len=SIZE){
for(int i=0;i<len;i++){
if((a[i]+=b[i])>=10){
a[i]-=10;
a[i+1]++;
}
}
}
void print(int *a,int len=SIZE){
int i;
for(i=len;i>0;i--)if(a[i]>0)break;
for(int j=i;j>=0;j--)cout<<a[j];
}
bool le(int *a,int *b,int len=SIZE){
int i;
for(i=len-1;a[i]==b[i]&&i>=0;i--);
return i<0||a[i]<b[i];
}
void mul(int *c,int *a,int *b){
converts(c,"0");//重设(最低位为零)
for(int i=0;i<SIZE;i++)
for(int j=1;j<=b[i];j++)//重复b[i]次
add(c+i, a, SIZE-i);//模拟乘法
// c+i指针,从c+i开始 SIZE-i对应防越界
}
void mulint(int *a,int b){
for(int i=0,c=0;i<SIZE;i++){
c=c/10+a[i]*b;//理论上输出c即可
a[i]=c%10;//但是我们是void要改变a,而且我们是高精度
}
}
void sub(int *a,int *b,int len=SIZE){
for(int i=0;i<len;i++){
if((a[i]-=b[i])<0){
a[i+1]--;
a[i]+=10;
}
}
}
void copy(int *a,int *b,int len=SIZE){
for(int i=0;i<len;i++)a[i]=b[i];
}
int main(){
string s1,s2;
cin>>s1>>s2;
converts(a,s1);
converts(b,s2);
add(a,b);
//copy(a,c);
print(a);
return 0;
}
这里空空如也
有帮助,赞一个