五:大数运算-加法运算

问题 : 大数-加法运算
题目描述

请计算两个整数相加(数的范围:0 <= num < 10 ^ 100)
输入
两个整数
输出
一个整数
样例输入
1000000
1000000
样例输出
2000000

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define M 100000
 4 int Inter_Sum[M];
 5 void fun(char str1[],char str2[]){
 6     int t,m=0,i=strlen(str1);
 7     int p=strlen(str2)-1;
 8     int k=0;
 9     while(i--){
10             if(p>=0)
11          t=(str1[i]-48)+(str2[p]-48)+m;
12          else t=(str1[i]-48)+m;
13         if(t<10){
14             Inter_Sum[k]=t;
15             m=0;
16         }else{
17             Inter_Sum[k]=t%10;
18             m=t/10;
19         }
20         k++;
21         p--;
22         if(i==0&&m!=0)Inter_Sum[k++]=m;
23     }
24     for(int j=k-1;j>=0;j--){
25         printf("%d",Inter_Sum[j]);
26     }
27 }
28 int main(){
29     char str1[M];
30     char str2[M];
31     memset(str2,‘0‘,sizeof(str2));
32     int i=0,j=0;
33     scanf("%s %s",str1,str2);
34     str1[strlen(str1)]=‘\0‘;
35     str2[strlen(str2)]=‘\0‘;
36     if(strlen(str1)>=strlen(str2))
37     fun(str1,str2);
38     else fun(str2,str1);
39     return 0;
40 }

原文地址:https://www.cnblogs.com/yuming226/p/8146097.html

时间: 2024-10-13 23:39:23

五:大数运算-加法运算的相关文章

十进制大数的加法运算

输入文件的第一行为一个整数N,表示输入文件中接下来有N组数据,没组数据最多包含100行,每行有一个非常长的十进制整数组成,这个整数的长度不会超过100个字符,而且只包含数字,每组数据的最后一行为0,表示这组数据结束. 对输入文件的每组数据,输出他们的和. 此题不同于两大数相加,是多个大数相加的问题,在求和时,有其独到之处:竖式加法 #include<iostream> #include<stdio.h> #include<string.h> const int M=20

大数的加法运算,杭电oj-1002

原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=1002 [Problem Description] I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B. [Input] The first line of the input contains an integer T(1<=T<=20

实现2个超大数的加法运算

一道笔试题~实现2个超大数据的加法运算,这2个超大数,意思就是long也装不下的数,就顶大概100位吧. 这道题其实看上去很简单,但是实际上涉及到的知识点还是很多的,非常考验一个人的程序设计能力和对API的熟悉程度. 思路很简单,这么大的数,long都存不下,那只能存在String中了,然后将每个数字取出,放到数组,由最末位开始计算,算加法,判断是否进位,进位则前位+1,若超过长度,则copy到新的数组. 下面上代码: public class BigInt { private int[] di

高精度计算(二) /*高精度的加法运算*/

例 高精度加法运算 输入正整数 a 和 b,输出 a+b 的值.0<a,b<=10^250 输入: 第一行:a 第二行:b   输出:a+b 的和. 样例输入: 99    999 样例输出: 1098 分析: (1)加法运算      -- a[7]  a[6]  a[5]  a[4]  a[3]  a[2]  a[1] -+-   0      0    b[5]  b[4]  b[3]  b[2]  b[1] ----------------------------------    

4个线程例子,2个线程对同一数字加法运算另外2个线程对同一共享数字减法运算

package com.saic.grape.controller; public class Data { private int j = 0; /** * 加法 */ public synchronized void inc() { j++; System.out.println("inc 加法运算>>" + j); } /** * 减法 */ public synchronized void dec() { j--; System.out.println("

[leetcode] Sum of Two Integers--用位运算实现加法运算

问题: Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Example: Given a = 1 and b = 2, return 3. 分析: 这里要求我们不能用加法.减法等运算符来实现加法运算.这里应该使用位运算来实现加法运算,实际上,这也是计算机CPU内部实现加法运算的方案. x XOR y真值表: x y output 0 0 0 0 1 1

[PAT] 一元多项式的乘法与加法运算 C语言实现

[PAT] 02-线性结构1 一元多项式的乘法与加法运算 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.零多项式应输出0 0. 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输出

(笔试题)只用逻辑运算实现加法运算

题目: 如题所示 思路: 逻辑运算,即二进制运算,无外乎与&.或|.非~.异或^以及移位>>,<<等操作: 而加法运算,在十进制中,只有按位相加以及进位两个操作. 从二进制角度也一样,就是bit位相加,加上相应的进位. 1.bit位相加,通过逻辑运算的异或操作可以实现,如0+1=1,1+0=1,0+0=0: 2.进位运算,通过逻辑运算的与操作可以实现,如1+1=1,因为进位是往高位+1,因此需要将进位结果左移一位. 将上述两个操作再做加法运算,就是加法运算的结果,这是一个递

字符串大数加减运算问题

这里自己利用STL模板中的容器和链表实现字符串大数加减运算. 1 #include<iostream> 2 #include<vector> 3 #include<list> 4 using namespace std; 5 6 list<char> Input_Number(list<char> ilist)//输入链表字符串,以‘#’作为结束符 7 { 8 cout<<"please Input string ,end