zoukankan      html  css  js  c++  java
  • 高精度计算(二) /*高精度的加法运算*/

    例 高精度加法运算

    输入正整数 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] 

                  ——————————————————————————————————
     
                     ……  c[7]  c[6]  c[5]  c[4]  c[3]  c[2]  c[1]
     
      运算的次数=max(la,lb)

    (2)程序实现: 方法一:模拟手工计算,设置一个进位变量 m

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    
    char s1[300], s2[300];
    int a[300], b[300], c[300];
    
    int main()
    {
    	int la, lb, lc, m=0;
    	cin >> s1 >> s2;
    	la = strlen(s1);
    	lb = strlen(s2);
    	for(int i=1;i<=la;i++)
    		a[i] = s1[la-i] - 48;
    	for(int i=1;i<=lb;i++)
    		b[i] = s2[lb-i] - 48;
    	if(la > lb)
    		lc = la;
    	else
    		lc = lb;
    	for(int i=1;i<=lc;i++)
    	{
    		c[i] = (m+a[i]+b[i]) % 10;
    		m = (m+a[i]+b[i]) / 10;
    	}
    	if(m==1)
    	{
    		lc++;
    		c[lc] = 1;
    	}
    	for(int i=lc;i>=1;i--)
    		cout << c[i];
    	cout << endl;
    	
    	return 0;
    }
    

      

     方法二:先计算,最后处理进位

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    
    char s1[300], s2[300];
    int a[300], b[300], c[300];
    int main()
    {
    	int la, lb, lc;
    	cin >> s1 >> s2;
    	la = strlen(s1);
    	lb = strlen(s2);
    	for(int i=1;i<=la;i++)
    		a[i] = s1[la-i] - 48;
    	for(int i=1;i<=lb;i++)
    		b[i] = s2[lb-i] - 48;
    	if(la > lb)
    		lc = la;
    	else
    		lc = lb;
    	for(int i=1;i<=lc;i++)
    		c[i] = a[i]+b[i];
    	for(int i=1;i<=lc;i++)
    	{
    		c[i+1] = c[i+1] + c[i]/10;
    		c[i] = c[i] % 10;
    	}
    	if(c[lc+1] == 1)
    		lc++;
    	for(int i=lc;i>=1;i--)
    		cout << c[i];
    	cout << endl;
    		
    	
    	return 0;
    }
    

      

  • 相关阅读:
    PySpark SQL 相关知识介绍
    Spark的安装及配置
    Hive的安装及配置
    Hadoop分布式集群的搭建
    寻找子串
    CPU呈现正弦函数曲线
    2.2链表中倒数第k个结点
    #137 Single Number II
    1.8字符串- 翻转子串
    1.7数组-清除行列
  • 原文地址:https://www.cnblogs.com/sineagle/p/6014309.html
Copyright © 2011-2022 走看看