• 算法学习 长整数相加


    # include <stdio.h>
    # include <iostream>
    using namespace std;
    
    
    // 字符串数字相加
    
    #define MAXSIZE  130
    #define BUFFERSIZE 200
    
    void print_num(int num[], int numlen, int verse);
    // 倒排文本数字串 '12345'->{5,4,3,2,1}
    int str2int_vers(int num[], char strnum[], int numlen);
    
    int sum(int num1[],int num2[],int num_sum[]);
    
    int main()
    {
    	char s_num1[BUFFERSIZE];
    	char s_num2[BUFFERSIZE];
    	int i_num1[MAXSIZE] = { 0 };
    	int i_num2[MAXSIZE] = { 0 };
    
    	// 获取输入,以空格区分
    	cin >> s_num1 >> s_num2;
    	int num1_len = strlen(s_num1);
    	int num2_len = strlen(s_num2);
    
    	// 对字符串进行数字转换
    	str2int_vers(i_num1, s_num1, num1_len);
    	str2int_vers(i_num2, s_num2, num2_len);
    	//print_num(i_num1, num1_len, 1);
    	//print_num(i_num2, num2_len, 0);
    
    	int i_num_sum[MAXSIZE] = { 0 };
    	int sum_len = sum(i_num1, i_num2, i_num_sum);
    	print_num(i_num_sum, sum_len, 1);
    	return 0;
    }
    int sum(int num1[], int num2[],int num_sum[])
    {
    	int i = 0;
    	// 10进制加法 倒序
    	for (i = 0; i < MAXSIZE; i++)
    	{
    		num_sum[i] += num1[i] + num2[i];
    		if (num_sum[i] >= 10)
    		{
    			num_sum[i + 1] = num_sum[i] / 10;
    			num_sum[i] = num_sum[i] % 10;
    		}
    	}
    	// 计算sum的长度
    	int len = MAXSIZE - 1;
    	for (len; len >= 0; len--)
    		if (num_sum[len] != 0) break;
    	return len+1;
    }
    
    void print_num(int num[], int numlen, int verse)
    {
    	int i = 0;
    	if (verse == 0)
    	{
    		for (i = 0; i < numlen; i++)
    			cout << num[i];
    	}
    	else
    	{
    		for (i = numlen-1; i >= 0; i--)
    			cout << num[i];
    	}
    	cout << endl;
    }
    int str2int_vers(int num[], char strnum[], int numlen)
    {
    	int i = 0;
    	while (strnum[i] != '')
    	{
    		num[numlen - i - 1] = strnum[i] - '0';
    		i += 1;
    	}
    	return i - 1;
    }
    

      最后附上python的版本。。。python,本身支持无限长整数计算

    str = raw_input()
    a,b = str.split(" ")
    c = a+b
    print c
    

      

  • 相关阅读:
    Logback日志格式配置相关记录
    前后端分离验证码之cookie+redis方案
    聊一聊Swagger ui登录功能实现方案
    nginx-thinkphp5
    jmeter常用的性能测试监听器
    jvm内存
    TCP连接状态详解
    原生Javascript实现图片轮播效果
    适用于CSS2的各种运动的javascript运动框架
    JS中for循环里面的闭包问题的原因及解决办法
  • 原文地址:https://www.cnblogs.com/hanahimi/p/4806498.html
Copyright © 2020-2023  润新知