- 第一次做题的时候想的太多简单,主要考虑的是一个先进先出的问题,把题目做成了队列的应用(笑哭,仔细检查了输出格式仍然PE,csdn后发现自己的思路完全去到了奇怪的地方…
#include <iostream>
#include<queue>
using namespace std;
int main()
{
int T;
cin>>T;
int i=0;
queue<long long> q;
while(i<T)
{
long long A;
cin>>A;
q.push(A);
long long B;
cin>>B;
q.push(B);
i++;
}
int cnt=1;
while(q.empty()== false)
{
cout<<"Case "<<cnt<<":"<<endl;
cnt++;
long long a=q.front();
q.pop();
long long b =q.front();
q.pop();
cout<<a<<" + "<<b<<" = "<<a+b<<endl;
if(q.empty()==false) cout<<endl;
}
return 0;
}
- 参考大佬们的做法,原来是个大数问题~,终于AC啦!
#include<iostream>
#include<cstring>
using namespace std;
char a[1010],b[1010],c[1010],d[1010];
int main()
{
int n,s,y=0;
cin>>n;
while(n--)
{
y++;
cin>>a>>b;
int s1=strlen(a);
int t1=0;
int s2=strlen(b);
for(int i=s1-1;i>=0;--i)
{
c[t1]=a[i];
++t1;
}
t1=0;
for(int i=s2-1;i>=0;--i)
{
d[t1]=b[i];
++t1;
}
if(s1>s2)
{
s=s1;
for(int i=s2;i<s1;++i)
d[i]='0';
}
else
{
s=s2;
for(int i=s1;i<s2;++i)
c[i]='0';
}
int t=0,x1,x2;
for(int i=0;i<s;++i)
{
x1=c[i]-'0';
x2=d[i]-'0';
d[i]=(x1+x2+t)%10+'0';
t=(x1+x2+t)/10;
}
if(t==0)
{
cout<<"Case "<<y<<':'<<endl;
cout<<a<<" + "<<b<<" = ";
for(int i=s-1;i>=0;--i)
cout<<d[i];
if(n!=0)
cout<<endl<<endl;
else
cout<<endl;
}
else
{
cout<<"Case "<<y<<':'<<endl;
cout<<a<<" + "<<b<<" = ";
char c='1';
strcat(d,&c);
for(int i=s;i>=0;--i)
cout<<d[i];
if(n!=0)
cout<<endl<<endl;
else
cout<<endl;
}
}
return 0;
}