思路:
改良了之前自己写的一个高精度的模板。。。也不能说是改良吧,应该是改错。。。 这题不会出现 000 + 000000 = 0 这种情况。 然后就是恶心的格式。。。pe了好久。。。
AC代码:
#include <iostream>
#include <cstdio>
#include <ctime>
#include <cstdlib>
#include <string.h>
#define N 10000
using namespace std;
void BigSum(
char* a,
char *b,
char *c){
char s[N];
int i =
strlen(a);
int j =
strlen(b);
if(i<j){
int temp = i;
i = j;
j = temp;
char * tt = a;
a = b;
b = tt;
}
int jinwei =
0;
int k;
for(k =
1;k <= i+
1;k++){
int m;
if(j >= k)
m = a[i-k] + b[j-k] -
48 *
2 + jinwei;
else if( i >= k)
m = a[i-k] -
48 + jinwei;
else{
m = jinwei;
if(m ==
0)
break;
}
if(m >=
10){
jinwei =
1;
m-=
10;
}
else{
jinwei =
0;
}
char c = m +
48;
s[k-
1] = c;
}
k--;
k--;
for(
int l =
0;l <= k;l++){
c[l] = s[k-l];
}
c[k+
1] =
'\0';
}
char mm[
5000];
char n1[
5000];
char n2[
5000];
int main()
{
int cas =
0;
int t;
cin>>t;
while(t--){
cas++;
scanf(
"%s%s",n1,n2);
BigSum(n1,n2,mm);
printf(
"Case %d:\n",cas);
printf(
"%s + %s = ",n1,n2);
for(
int i =
0;mm[i];i++){
printf(
"%c",mm[i]);
}
if(t !=
0)
printf(
"\n\n");
else
printf(
"\n");
}
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-1201295.html