您的位置:首页 > 其它

HDOJ1002大数加法

2013-03-17 22:16 176 查看
#include <stdio.h>
#include <string.h>
int main () {

	int n;
	char str1[1010], str2[1010];
	int dst[1010];
	int i, j;

	while(scanf("%d", &n) != EOF && n) {

		for(i = 1; i <= n; i ++) {
		
			memset(str1, 0, sizeof(str1));
			memset(str2, 0, sizeof(str2));
			memset(dst, 0, sizeof(dst));

			scanf("%s %s", str1, str2);
			
			int len1 = strlen(str1);
			int len2 = strlen(str2);

			printf("Case %d:\n", i);
			printf("%s + %s = ", str1, str2);

			int k;

			if(len1 > len2) {
			
				while(len1 - len2 > 0)
				{
					for(j = len2 - 1; j >= 0; j --) {
						
						str2[j + 1] = str2[j];
					}
						str2[0] = '0';
						len2 ++;

				}
			}

			else if(len2 > len1) {
			
				while(len2 - len1 > 0)
				{
					for(j = len1 - 1; j >= 0; j --) {
						
						str1[j + 1] = str1[j];
					}
						str1[0] = '0';
						len1 ++;			

				}
			}

			int count = 0;

			for(j = len1 - 1, k = 0; j >= 0; j --) {
		
				dst[k] = str1[j] - '0' + str2[j] - '0' + count;

				if(dst[k] >= 10) {
					dst[k ++] -= 10;
					count = 1;
				}

				else 
				{
					k ++;
					count = 0;
				}
			}

			if(count == 1) dst[k ++] = 1;

		for(j = k - 1; j >= 0; j --)
			printf("%d", dst[j]);

		printf("\n");

		if(i != n)
			printf("\n");
		}

		break;
	}
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: