zoukankan      html  css  js  c++  java
  • 大整数加法

    Description

    比利经常会碰到超大整数的加法运算,而普通的计算器上无法进行。因此他想你帮他写一个程序来计算结果。

    Input

    输入数据有多组。首先输入一个整数T,表示有T组输入。

    每组输入两个大整数,并用空格隔开。每个整数最多1000位。没有负数输入。

    Output

    对于每组输入,输出两个整数的和,单独占一行。

    Sample Input

    2
    1 2
    112233445566778899 998877665544332211
    Sample Output
    31111111111111111110

    代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    using namespace std;
    
    int main(void){
    
    	const int N = 1001;
    	int count, i, j, k, max;
    	char ch1[N];
    	char ch2[N];
    	int num3[N];
    	int num4[N];
    	scanf("%d", &count);
    
    	for (i = 0; i < count; i++)
    	{
    		//初始化数组
    		memset(ch1, 0, sizeof(ch1));   
    		memset(ch2, 0, sizeof(ch2));
    		memset(num3, 0, sizeof(num3));
    		memset(num4, 0, sizeof(num4));
    
    		scanf("%s", ch1);
    		scanf("%s", ch2);
    
    		//求输入的长度
    		int len1 = strlen(ch1);
    		int len2 = strlen(ch2);
    
    		//倒置并存入新的整形数组
    		k = 0;
    		for (i = len1 - 1; i >= 0; i--)
    			num3[k++] = ch1[i] - '0';
    		k = 0;
    		for (i = len2 - 1; i >= 0; i--)
    			num4[k++] = ch2[i] - '0';
    
    		max = len1 > len2 ? len1 : len2;
    
    		//加法运算,>=10加1
    		for (j = 0; j < max; j++){
    			num3[j] += num4[j];
    			if (num3[j] >= 10){
    				num3[j] -= 10;
    				num3[j + 1]++;
    			}
    		}
    		
    		//倒序输出
    		if (num3[max])
    			printf("%d", num3[max]);
    		for (i = max - 1; i >= 0; i--)
    			printf("%d", num3[i]);
    
    		printf("
    ");
    	}
    
    }
  • 相关阅读:
    window.onload和document.ready/jquery页面加载事件等的区别
    JAVA面试题大全
    BIO NIO AIO的知识扫盲
    类的加载过程详细解释
    nginx的Rewrite和其他相关配置
    【微服务架构设计】DDD
    【重构】
    【多线程】Lock接口与其实现类
    【三方件】汇总
    【SpringBoot-SpringSecurity】安全响应头+防攻击 ~~ TODO
  • 原文地址:https://www.cnblogs.com/liuzeyu12a/p/10587811.html
Copyright © 2011-2022 走看看