#include<cstdio>
#include<cstdlib>
#include<string.h>
#include<iostream>
using namespace std;
#include<stack>
stack<int> s1;
stack<int> s2;
stack<int> s3;
char a[1005],b[1005];
void calculate()
{
int temp = 0;
while(!s1.empty() && !s2.empty())
{
temp += s1.top() + s2.top();
s1.pop();
s2.pop();
s3.push(temp % 10);
temp /= 10;
}
while(!s1.empty())
{
temp += s1.top();
s1.pop();
s3.push(temp % 10);
temp /= 10;
}
while(!s2.empty())
{
temp += s2.top();
s2.pop();
s3.push(temp % 10);
temp /= 10;
}
if(temp != 0)
s3.push(temp);
}
void print(int j,int n)
{
printf("Case %d:\n",j);
for(int i = 0; i < strlen(a); i++)
printf("%c",a[i]);
printf(" + ");
for(int i = 0; i < strlen(b); i++)
printf("%c",b[i]);
printf(" = ");
while(!s3.empty())
{
printf("%d",s3.top());
s3.pop();
}
if(j != n)
printf("\n\n");
else printf("\n");
}//A + B = Sum
int main()
{
int n;
scanf("%d",&n);
for(int i = 0; i < n; i++)
{
while(!s1.empty())
s1.pop();
while(!s2.empty())
s2.pop();
while(!s3.empty())
s3.pop();
scanf("%s%s",a,b);
for(int j = 0; j < strlen(a); j++)
s1.push(a[j] - '0');
for(int j = 0; j < strlen(b); j++)
s2.push(b[j] - '0');
calculate();
print(i + 1,n);
}
}
HDU 1002高精度加法的栈实现_简单易懂
最新推荐文章于 2021-11-17 17:11:42 发布