大数加减

解决大数的最好方法就是用java,然还是要写点C++

  1. import java.math.BigInterger;
  2. import java.util.Scanner;
  3. public class Main(){
  4.   public static void main(String[] args){

  5.       Scanner in = new Scanner(System.in);

  6.       while(in.hasNext())
  7.       {
  8.          string a = in.next();
  9.          string b = in.next();
  10.   
  11.          BigInteger c = new BigInteger(a);
  12.          BigInteger d = new BigInteger(b);
  13.  
  14.         System.out.printIn( c.ad(d) );
  1.       }
  2.    }
  3. }


【加法】

  1. string Add(string one, string two)
  2. {
  3.    int a,b;
  4.    int max;
  5.   
  6.    string sum;
  7.    alen = one.size();
  8.    blen = two.size();
  9.  
  10.    if(a >= b) 
  11.          max = alen;
  12.     else
  13.          max = blen;
  14.  
  15.     sum.resize(max,'0');
  16.   
  17.     for(int i=0; i<alen; i++)
  18.         sum[max-i-1] = sum[max-i-1] + one[alen-i-1] - '0';
  19.  
  20.     for(int i=0; i<blen; i++)
  21.         sum[max-i-1] = sum[max-i-1] + two[blen-i-1] - '0';
  22.   
  23.      for(int i=max-1; i>=1; i--)
  24.         if(sum[i] >'9')
  25.           {
  26.             sum[i] -= 10;
  27.             sum[i-1]++;
  28.           }
  29.          if(sum[0] >'9')
  30.           {
  31.             sum[0] -= 10;
  32.             sum[0] ++ ;
  33.           }
  34.    return sum;
  35. }



【减法】


  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. bool positive = true;

  5. int main(){
  6.     string big,small;
  7.      cin>>big>>small;

  8.      if(big==small) cout<<0; return 0;

  9.      if(small.size() > big.size() || (small.size()==big.size() && small>big))
  10.      {
  11.         positive = false;
  12.         swap(big,small);
  13.      }
  14.  
  15.      if(small.size() < big.size())
  16.             small.insert(0, big.size()-small.size(), 48);
  17.   
  18.       int flag = 0;
  19.       for(int i=big.size()-1; i>=0; i--)
  20.       {
  21.           big[i] += big[i] - small[i] - flag;
  22.   
  23.           if(big[i] < 0)
  24.            {
  25.                big[i] += 10;
  26.                 flag = 1;
  27.            }else
  28.                 flag = 0; 
  29.              big[i] += 48;
  30.          }

  31.            if(!positive)
  32.                  
  33.                 cout<<"-";
  34.      return 0;
  35. }


【附】

1、resize(n) 

调整容器的长度大小,使其能容纳n个元素。

如果n小于容器的当前的size,则删除多出来的元素。

否则,添加采用值初始化的元素。

2、 resize(n,t)

多一个参数t,将所有新添加的元素初始化为t。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屠变恶龙之人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值