AOJ_0015 National Budget

あしたじゅけーーん
問題
解法
筆算するみたいにやっていけばいい。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int MAX_K = 80;
char num1[MAX_K + 1];
char num2[MAX_K + 1];
char numS[MAX_K + 1];
int k1, k2;
bool plus(){
	int t = 0, s;
	for(int i = MAX_K - 1; i >= 0; i--){
		s = num1[i] + num2[i] + t;
		t = s / 10;
		numS[i] = s % 10 + '0';
	}
	if(t != 0) return false;
	return true;
}
int main(){
	int N; char c;
	scanf("%d", &N);
	for(int i = 0; i < N; i++){
		fill(num1, num1 + MAX_K + 1, 0);
		fill(num2, num2 + MAX_K + 1, 0);
		scanf("%c", &c);
		scanf("%s", num1);
		scanf("%c", &c);
		scanf("%s", num2);
		k1 = strlen(num1), k2 = strlen(num2);
		for(int i = MAX_K - 1; i >= MAX_K - k1; i--)
			num1[i] = num1[i - MAX_K + k1] - '0';
		for(int i = 0; i < MAX_K - k1; i++)
			num1[i] = 0;
		for(int i = MAX_K - 1; i >= MAX_K - k2; i--)
			num2[i] = num2[i - MAX_K + k2] - '0';
		for(int i = 0; i < MAX_K - k2; i++)
			num2[i] = 0;
		if(plus()){
			int i = 0;
			while(numS[i] == '0' && i <= MAX_K){ i++; }
			if(i == MAX_K) printf("0\n");
			else printf("%s\n", &numS[i]);
		}else{
			printf("overflow\n");
		}
	}
	return 0;
}

じゅけんがんばる