PE了6次,ACM中Output a blank line between two test cases. 是指每个输出之间有空行,在输出循环中,要给条件判断是不是最后一次输出。
resize(新的大小,填充字符) , 如果新的大小小于原来的大小,则从后面删除直到指定大小,若大于则用填充字符填充不足的部分,如果没有指定填充字符默认为\0(NULL
#include<iostream>
#include<string>
using namespace std;
int main(){
string s1, s2,str1,str2;
char rt[2000];
int t,carry;
cin >> t;
for(int k=0;k<t;k++){
carry = 0;
int n = 0;
cin >> s1 >> s2;
str1 = s1;
str2 = s2;
reverse(s1.begin(), s1.end()); //反转两串 方便相加
reverse(s2.begin(), s2.end());
if (s1.size() >= s2.size()) //使两个串长度相等,方便相加
s2.resize(s1.size(), '0');
else
s1.resize(s2.size(),'0' );
for (n; n < s2.size(); n++){
rt[n] = (s1[n] + s2[n] - 96 + carry) % 10 + 48;
carry = (s1[n] + s2[n] - 96 + carry) / 10;
}
if (carry>0)rt[n++] = carry + 48;
cout << "Case " << k + 1 << ":" << endl << str1 << " + " << str2 << " = ";
for (n -= 1; n >= 0; n--)
cout << rt[n];
cout << endl;
if (k != t - 1)
cout << endl;
}
}
java版:
//package mypackage;
//import java.util.ArrayDeque;
// java test<input.txt> output.txt;
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
BigInteger a,b;
int t;
Scanner in = new Scanner(System.in);
t=in.nextInt();
for(int T=1;T<=t;T++)
{
a=in.nextBigInteger();
b=in.nextBigInteger();
BigInteger c=a.add(b);
if(T!=1)
System.out.println();
// System.out.printf("Case %d:\n",T); // 这种方法PE
// System.out.printf("%s + %s = %s\n",a.toString(),b.toString(),c.toString());
System.out.println("Case "+T+":");
System.out.println(a+" + "+b+" = "+c);
}
}
}