@[TheOldDriver](/space/show?uid=86657) 建议使用scanf读入字符串,因为数据里可能只有'\r',没有'\n'。
by StudyingFather @ 2018-12-10 22:20:29
(蒟蒻报道):
建议函数!!!
接下来代码:
#include<bits/stdc++.h>
using namespace std;
const int maxN=501;
void convert(string str,int num[]) {
int len=str.size();
memset(num,0,sizeof(int)*maxN);
for(int i=1; i<=len; i++) {
num[i]=str[len-i]-'0';
}
num[0]=len;
}
void output(int num[]) {
for(int i=num[0]; i>=1; i--) {
cout<<num[i];
}
}
void add(int a[],int b[],int c[]) {
int lc;
lc=a[0];
if(b[0]>lc) {
memset(c,0,sizeof(int)*maxN);
lc=b[0];
}
for(int i=1; i<=lc; i++) {
c[i]=c[i]+b[i]+a[i];
c[i+1]=c[i]/10;
c[i]=c[i]%10;
}
if(c[lc+1]>0) {
lc++;
}
c[0]=lc;
}
int main() {
int a[maxN],b[maxN],c[maxN];
string as,bs;
cin>>as>>bs;
convert(as,a);
convert(bs,b);
add(a,b,c);
output(c);
return 0;
}
不想打空格
by XChenNB @ 2018-12-11 20:19:27
@[juanxincai](/space/show?uid=128240) 希望更丰富的展现?使用Markdown
by 初墨 @ 2018-12-19 20:41:39
```cpp
//B4P182 洛谷P1601 高精度+
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int a[505],b[505],c[505],x;
char a1[100],b1[100];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>a1>>b1;
a[0]=strlen(a1);
b[0]=strlen(b1);
for(int i=0;i<=a[0]-1;i++)a[a[0]-i]=a1[i]-48;
for(int i=0;i<=b[0]-1;i++)b[b[0]-i]=b1[i]-48;
c[0]=1;
x=0;
while(c[0]<=a[0]||c[0]<=b[0]){
c[c[0]]=a[c[0]]+b[c[0]]+x;
x=c[c[0]]/10;
c[c[0]]%=10;
c[0]++;
}
c[c[0]]=x;
if(x==0)c[0]--;
for(int i=c[0];i>=1;i--){
cout<<c[i];
}
cout<<endl;
return 0;
}
```
by wuhong_吴洪 @ 2019-01-27 18:58:56
第一位的代码看不懂。。
```
#include <bits/stdc++.h>
using namespace std;
int a[505], b[505], c[1005];
char q[505];
void Add(int a[], int b[], int c[]) {
if (a[0] == 0 && b[0] == 0) {
c[0] == 0; return ;
}
int m = min(a[0], b[0]), m1 = max(a[0], b[0]);
for (int i = 0; i < m; i++) c[i + 1] = a[a[0] - i] + b[b[0] - i];
if (a[0] > b[0])
for (int i = b[0] + 1; i <= a[0]; i++) c[i] = a[a[0] - i + 1];
else
for (int i = a[0] + 1; i <= b[0]; i++) c[i] = b[b[0] - i + 1];
for (int i = 1; i <= m1; i++)
if (c[i] >= 10) {
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
c[0] = m1;
if (c[m1 + 1] > 0) c[0] = m1 + 1;
return ;
}
int main() {
scanf("%s", q); a[0] = strlen(q);
for (int i = 1; i <= a[0]; i++) a[i] = q[i - 1] - '0';
scanf("%s", q); b[0] = strlen(q);
for (int i = 1; i <= b[0]; i++) b[i] = q[i - 1] - '0';
Add(a, b, c);
for (int i = c[0]; i >= 1; i--) printf("%d", c[i]);
if (c[0] == 0) printf("0");
return 0;
}
```
by 时空之影 @ 2019-06-19 22:00:04