鏄ㄥぉ鐪嬪埌浜?jiǎn)鏉數(shù)ACM鐨?002棰橈紝鐒跺悗鎯充簡(jiǎn)浼?xì)锛屾妸澶ф暟鐨勫姞娉曢儴鍒嗗仛浜?jiǎn)錛岀劧鍚庝粖澶╁叿浣撳氨瀹屾垚浜?jiǎn)杈撳叆鍜岃绠楃殑澶勭悊妯″潡銆傛彁浜や簡(jiǎn)鍑犳閮藉嚭鐜頒簡(jiǎn)presentation error闂錛屽彂鐜板浜庣粨鏋滅殑鏍煎紡瑕佹眰榪樻槸寰堜弗鏍肩殑銆備負(fù)姝や慨鏀逛簡(jiǎn)鍑犳錛岀粓浜庤繃浜?jiǎn)銆傚彂鐜伴氳繃鐜囨墠18%錛岃繕鏄湁鐐硅嚜璞劅錛岃櫧鐒舵瘮杈冭彍錛屼絾鏄繕鏄參鎱㈡悶鍚с?br />
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int *sum(int *a,int aNum,int *b,int bNum,int &FirstFlag)//浜轟負(fù)鐨勮宸﹁竟鏁扮粍杈冮暱(澶?
{
int maxNum = aNum;
int *c = new int [maxNum]; //鍙兘鏈夎繘浣?/span>
int flag = 0;
for(int i = 0; i < maxNum; i++)
{
if(i < bNum )
{
if( (a[aNum - i - 1] + b[bNum - i - 1] + flag) >= 10 )
{
c[aNum - i - 1] = a[aNum - i - 1] + b[bNum - i - 1] + flag - 10;
flag = 1; //flag涓瀹氭槸鍦ㄨ綆椾箣鍚庡緱鍒扮殑
}
else
{
c[aNum - i - 1] = a[aNum - i - 1] + b[bNum - i - 1] + flag;
flag = 0;
}
}
else
{
if( (a[aNum - i - 1] + flag) >= 10)
{
c[aNum - i - 1] = a[aNum - i - 1] + flag - 10;
flag = 1;
}
else
{
c[aNum - i - 1] = a[aNum - i - 1] + flag;
flag = 0;
}
}
}
if(flag == 1)
FirstFlag = 1;
return c;
}
int main()
{
int number;
cin >> number;
int i = 0;
string a,b;
vector<string> vec;
while(i < number)
{
cin >> a >> b;
vec.push_back(a);
vec.push_back(b);
i++;
}
for(i = 0; i < number; i++)
{
// cout << vec[2 * i] << " "<< vec[2 * i + 1] << endl;杞崲鎴愭暟緇?/span>
int aNum = vec[2 * i].length();
int bNum = vec[2 * i + 1].length();
int maxNum = (aNum > bNum) ? aNum : bNum;
int *c = new int [maxNum];
int *a = new int [aNum];
int *b = new int [bNum];
for(int k = 0; k < aNum; k++)
{
a[k] = vec[2 * i].at(k) - '0';
}
for(int j = 0; j < bNum; j++)
{
b[j] = vec[2 * i + 1].at(j) - '0';
}
int FirstFlag = 0;
if(aNum > bNum)
{
c = sum(a,aNum,b,bNum,FirstFlag);
cout << "Case " << i+1 << ":" << endl;
cout << vec[2 * i] << " + " << vec[2 * i + 1] << " = ";
if(FirstFlag == 1)
cout << FirstFlag ;
for(int m = 0; m < aNum; m++)
cout << c[m];
cout << endl;
if(i != (number-1))
cout << endl;
}
else
{
c = sum(b,bNum,a,aNum,FirstFlag);
cout << "Case " << i+1 << ":"<< endl;
cout << vec[2 * i] << " + " << vec[2 * i + 1] << " = ";
if(FirstFlag == 1)
cout << FirstFlag ;
for(int m = 0; m < bNum; m++)
cout << c[m];
cout << endl;
if(i != (number-1))
cout << endl;
}
delete []a;
delete []b;
delete []c;
}
return 0;
}
鎬葷粨鏉ヨ灝辨槸錛?br />錛?錛夊厛浠庝竴涓釜妯″潡寮濮嬪惂錛屾瘮濡傚ぇ鏁板姞娉曞嚱鏁幫紝鐒跺悗鍐嶈冭檻杈撳叆鏍煎紡錛岃鍙栵紝杈撳嚭絳夌瓑鍏朵粬銆?br />錛?錛夊ぇ鏁扮殑璇濊繕鏄湁寰堝瑕佽冭檻鐨勶紝榪涗綅鐨勯棶棰橈紝琛ラ綈絳夐棶棰橈紝寮濮嬪啓榪欎釜鍑芥暟鐨勬椂鍊欓兘娌℃湁娉ㄦ剰鍒幫紝鐪熷鑿滅殑錛屾敼浜?jiǎn)鍑犻亶鎵崢q囥?br />錛?錛夋晥鐜囧暐鐨勮寰椾笉楂橈紝鍚勪綅鑳藉浼樺寲鐨勬榪庝氦嫻侊紝鍙﹀鍏充簬ACM鏈夊叴瓚g殑鍚屽鍙互璁ㄨ涓嬶紝鎴戞墠鍒氬叆闂紝嬈㈣繋鎸囨暀銆?br />

]]>