zoukankan      html  css  js  c++  java
  • 高精度减法

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cmath>
     5 #include<cstring>
     6 using namespace std;
     7 int main()
     8 {
     9     //高精度减法,被减数必须比减数大
    10     //同时需要处理借位
    11     int a[100000],b[100000],c[100000],lena,lenb,lenc,i;
    12     char n[100000],n1[100000],n2[100000];
    13     memset(a,0,sizeof(a));
    14     memset(b,0,sizeof(b));
    15     memset(c,0,sizeof(c));
    16     printf("Input minuend:"); gets(n1);//输入被减数 
    17     printf("Input subtrahend:"); gets(n2);//输入减数
    18     if(strlen(n1) < strlen(n2) ||strlen(n1) == strlen(n2) && strcmp(n1,n2) < 0)//当被减数小于减数
    19     {
    20         strcpy(n,n1);
    21         strcpy(n1,n2);
    22         strcpy(n2,n);
    23         printf("-");//交换减数与被减数,然后填上负号 
    24     }
    25     lena = strlen(n1);
    26     lenb = strlen(n2);
    27     for(i = 0;i <= lena - 1;i++) a[lena - i] = int(n1[i] - '0');
    28     for(i = 0;i <= lenb - 1;i++) b[lenb - i] = int(n2[i] - '0');
    29     i = 1;
    30     while(i <= lena||i <= lenb)
    31     {
    32         if(a[i] < b[i])
    33         {
    34             a[i] += 10;
    35             a[i + 1]--;//借位 
    36         }
    37         c[i] = a[i] - b[i];//对应位相减 
    38         i++;
    39     }
    40     lenc = i;
    41     while((c[lenc] == 0) && (lenc > 1))lenc--;//最高位的0不输出     
    42     for(i = lenc;i >= 1;i--) printf("%d",c[i]);
    43     return 0;
    44 }

    end。

  • 相关阅读:
    .ssh/config 文件的解释算法及配置原则
    不fq安装 golang tools
    iOS 组件化的几篇文章
    第一把机械键盘 ikbc C-87
    我推荐的 Java Web 学习路线
    【吐槽向】iOS 中的仿射变换
    Spring 对缓存的抽象
    Spring 事务管理笔记
    Swift 笔记汇总
    Java 类加载器
  • 原文地址:https://www.cnblogs.com/peppa/p/8495315.html
Copyright © 2011-2022 走看看