c++高精度算法,对于新手来说还是一大挑战,只要克服它,你就开启了编程的新篇章,算法。

我发的这个代码并不是很好,占用内存很多而且运行时间很长(不超过0.02秒),但是很好理解,很适合新手

高精算法的本质就是把数组编程字符串,然后将字符串像竖式减去:

 #include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{
char a[],b[];//设两个字符串
cin>>a>>b;//读入两个字符串
int c[],d[],h[],n1,n2,i,f=,l=;
n1=strlen(a);//求字符串长度
n2=strlen(b);
for(i=;i<n1/;i++) swap(a[i],a[n1--i]);
for(i=;i<n2/;i++) swap(b[i],b[n2--i]);
for(i=;i<n1;i++) c[i]=a[i]-'';//把字符串a的字符转化为数字存到数组c当中。其中“-‘0’”为转换方法
for(i=;i<n2;i++) d[i]=b[i]-'';
if(n2>n1)//这一步是判断那个数长,哪个就大,就用哪个做被减数存到数组c中,哪个小就存到d中
{
for(i=;i<n2;i++) swap(c[i],d[i]);//把两数交换,swap为交换函数
f=;//设一个旗帜,以后如果f=1就说明这数被减数比减数小,是负数。
}
if(n1>n2) swap(n1,n2); //取长的做for循环条件
for(i=;i<n2;i++) h[i]=c[i]-d[i];
for(i=;i<n2;i++)//这部就是借位
{
if(h[i]<)
{
h[i]=+h[i];
h[i+]--;
}
}
if(f==) cout<<"-";//如果f等于一也就是结果为负数,打印“-”
for(i=n2-;i>=;i--)//这步很重要! 这是在输出时把首位的0都去掉
{
if(l==)//设了一个l,如果l为0意味着还没有碰到非零数,也就是有0就要去掉的0
{
if(h[i]!=) //如果这数不为零
{
l=;//l=1表明碰到了非零数了以后的0有实际意义要打印出来
cout<<h[i];//打印此数
continue;//然后跳出本次循环
}
}
if(l!=)//如果l不等于0,就说明这时的0有实际意义,要打印出来
{
cout<<h[i];
}
}
}

a-b高精度

c++减法高精度算法的更多相关文章

  1. 转载:C++之高精度算法

    C++之高精度算法 注意:本文转载自http://blog.sina.com.cn/s/blog_4fdb102b010087ng.html,十分感谢原作者:忍者    前言:由于计算机运算是有模运算 ...

  2. 高精度算法(C/C++)

    高精度算法 (C/C++) 做ACM题的时候,经常遇到大数的加减乘除,乘幂,阶乘的计算,这时给定的数据类型往往不够表示最后结果,这时就需要用到高精度算法.高精度算法的本质是把大数拆成若干固定长度的块, ...

  3. 【蓝桥杯C组】备赛基础篇之高精度算法

    一.高精度加法 思路: 运用vector数组(c选手可用len来记录数组长度,数组去保存数字)将存入字符串里面的数字符倒叙保存,按照小学的加法列式,相加保存进位即可.具体参考代码. 详细代码解析: # ...

  4. c++加法高精度算法

    c++高精度算法,对于新手来说还是一大挑战,只要克服它,你就开启了编程的新篇章,算法. 我发的这个代码并不是很好,占用内存很多而且运行时间很长(不超过1秒),但是很好理解,很适合新手 高精算法的本质就 ...

  5. #AcWing系列课程Level-2笔记——5.高精度“+”算法

    高精度"+"算法 编写高精度"+",记住下面的过程,代码也就游刃有余了! 1.首先我们要明白大整数是如何存储的? 2.其次存储完,如何运算? 高精度" ...

  6. LeetCode43,一题让你学会高精度算法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode系列第22篇文章,今天讲的内容是高精度算法. 今天和大家讨论的算法是高精度,对应的LeetCode是第43题.题面其实 ...

  7. 【洛谷】P1009 阶乘之和——高精度算法

    题目描述 用高精度计算出S = 1! + 2! + 3! + - + n!  ( n ≤  50 ) S = 1! + 2! + 3! + - + n! ( n ≤ 50 ) 其中"!&qu ...

  8. c++ 超长整数减法 高精度减法

    c++ 超长整数减法 高精度减法 实现思路 和加法类似,设置临时变量记录借位 当对应位数相减得到的结果大于等于0时,该位数字为本身值,否则需要加上借位的10.则\(t=(t+10)%10\) 打卡代码 ...

  9. [SinGuLaRiTy] 高精度算法代码库

    [SinGuLaRiTy-1001] Copyrights (c) SinGuLaRiTy 2017. All Rights Reserved. 加法: #include<stdio.h> ...

随机推荐

  1. MySQL sql_safe_updates 分析

    我在练习MySQL操作语句时,使用一条完全没有错误的语句: update students set name='drake' where name='chuan'; 却报了如下错误: Error Co ...

  2. 数据分析之pandas入门

    一.数据结构 1. Series 1.1 序列构造和调用 Series是一种类似于一维数组的对象,它由一组数据和索引共同组成,可以通过索引的方式来选取Series中的单个或一组值,常用的构造函数为ob ...

  3. ehcache memcache redis 三大缓存

    最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存的优缺点,仅供参考!  Ehcache 在Java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS ...

  4. USACO翻译:USACO 2014 US Open 三题

    USACO 2014 US Open 一.题目概览 中文题目名称 牧场装饰 里程表 牛像展览 英文题目名称 decorate odometer fairphoto 可执行文件名 decorate od ...

  5. 分组统计并计算每组数量sql

    有 字段A 和B比如数据如下A  B1  21  31  4 2  22  3 统计出的sql结果: A   count 1   3 2   2 select a,count(b) from t gr ...

  6. Unity学习疑问记录之Quaternion

    http://www.cnblogs.com/88999660/articles/2893126.html

  7. 使用XStream解析MXL文件用到的jar包---xpp3_min-1.1.3.4.O.jar和xstream-1.3.1.jar

    使用XStream解析MXL文件用到的jar包---xpp3_min-1.1.3.4.O.jar和xstream-1.3.1.jar

  8. javascript 时间格式化

    添加扩展 //时间格式化扩展Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1 ...

  9. java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)可能出现的原因

    可能是因为你的服务器http连接过多,导致端口被占用,无法释放

  10. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-1 前言

    视频简介: 该视频介绍收到iCore3应用开发平台后如何获取出厂代码,以 及如何下载出厂代码到应用开发平台中. 源视频包下载地址: http://pan.baidu.com/s/1nuUZW17   ...