高精度减法——一步一步算法篇
来源:互联网 发布:cnas 软件测试实验室 编辑:程序博客网 时间:2024/06/05 14:25
高精度减法
利用竖式计算的方式,注意借位和错位,还有前导0。
#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>using namespace std;int main(){ int a[256],b[256],c[256],lena,lenb,lenc,i; char n[256],n1[256],n2[256]; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); gets(n1); //输入被减数 gets(n2); //输入减数 if (strlen(n1)<strlen(n2)||(strlen(n1)==strlen(n2)&&strcmp(n1,n2)<0)) { //strcmp()为字符串比较函数,如果n1==n2,返回0 //如果n1>n2,返回正整数,如果n1<n2,返回负整数 strcpy(n,n1); //判断被减数和减数的大小,交换减数和被减数 strcpy(n1,n2); strcpy(n2,n); cout<<"-"; //交换之后的数据,结果为负数 } lena=strlen(n1);lenb=strlen(n2); for (i=0;i<=lena-1;i++) a[lena-i]=n1[i]-'0'; //被减数放入a数组 for (i=0;i<=lenb-1;i++) b[lenb-i]=n2[i]-'0'; //减数放入b数组 i=1; while (i<=lena) { if (a[i]<b[i]) { a[i]+=10; //不够减借位 a[i+1]--; //上一位减一 } c[i]=a[i]-b[i]; //对应位相减 i++; } lenc=i; for (i=lenc;i>=1;i--) if ((c[i]==0)&&(lenc>1)) lenc--;else break; //删除前导“0” for (i=lenc;i>=1;i--) cout<<c[i]; cout<<endl; return 0;}
一步一步算法篇
2 0
- 高精度减法——一步一步算法篇
- 高精度加法——一步一步算法篇
- 高精度乘法——一步一步算法篇
- 高精度——高精度减法
- 高精度减法算法
- 高精度加,减法算法
- 高精度计算——加法&&减法
- C++高精度算法之高精度减法
- 高精度除法(高精除以低精)——一步一步算法篇
- 高精度算法一:加法和减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 基于MT7688模块的开发笔记13——给MT7688开发板添加tftp等功能
- How to Install JAVA 8 (JDK 8u91) on Ubuntu & LinuxMint via PPA
- FreeRTOS高级篇4---FreeRTOS任务切换分析
- Spring MVC 解决跨域问题&以及对@RequestBody的理解
- 开挂的map
- 高精度减法——一步一步算法篇
- 在spark中使用Hive报错error: not found: value sqlContext
- uva Ugly Numbers
- chrono
- Java核心之I/O;
- spark 1.3.1以上的集群搭建流程
- 第八周项目三-指向学生类的指针
- TextView的setOnClickListener
- 风云CTF2016 WEB WP