Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
168345 | 谢宗晋 | 被限制的加法 | C++ | 通过 | 100 | 1 MS | 268 KB | 1304 | 2024-08-20 10:02:23 |
#include<iostream> #include<cstdio> using namespace std; int n,a,b,c,n9,sum,i,j; bool first; int main() { ios::sync_with_stdio(false); cin>>n; first=1; c=0; n9=0;//n9表示之前累积的9的个数 for(i=1;i<=n;i++)//从高位开始,依次处理每一位 { cin>>a>>b; sum=a+b; if(sum<9)//无进位情况 { if(c>0||first==0)//避免前导零 cout<<c; for(j=1;j<=n9;j++)//因为该位无进位,则可将之前积累的999...999 以000...000输出 cout<<9; first=0; n9=0;//积累的999...999已输出,因此设为0 c=sum; } else if(sum==9)//为9时,只要记录9的个数 n9++; else//大于9,即产生进位情况 { c++;//进位后输出 cout<<c; for(j=1;j<=n9;j++)//因为进位,则将前面积累的999...999以000...000输出 cout<<0; first=0; n9=0;c=sum-10; //c记录该位数进位后余下的数 } } cout<<c; for(j=1;j<=n9;j++)//处理剩下的一段999...999 cout<<9; return 0; }