首页 > 其他 > 详细

高精度计算

时间:2019-05-07 20:35:34      阅读:98      评论:0      收藏:0      [点我收藏+]

高精度计算和竖式计算没什么区别,但由于数据很大需要用字符串读入所以过程中可能会有一些小问题。高精度算是学oi的基本知识所以直接上我的优(chou)美(lou)代码。

高精度算法,属于处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘,开方等运算。对于非常庞大的数字无法在计算机中正常存储,于是,将这个数字拆开,拆成一位一位的,或者是四位四位的存储到一个数组中, 用一个数组去表示一个数字,这样这个数字就被称为是高精度数。高精度算法就是能处理高精度数各种运算的算法,但又因其特殊性,故从普通数的算法中分离,自成一家。--百度百科

高精度加法(洛谷P1601

题目描述

高精度加法,x相当于a+b problem,不用考虑负数。

输入输出格式

输入格式:

 

分两行输入a,b<=10^500

 

输出格式:

 

输出只有一行,代表A+B的值

 

输入输出样例

输入样例#1: 
1
1
输出样例#1: 
2
技术分享图片
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
using namespace std;
int n,k;
char shu1[1001],shu2[1001];
char c1[1001],c2[1001];
char ans[1001];
int main()
{
    memset(c1,0,sizeof(c1));
    memset(c2,0,sizeof(c2));
    scanf("%s",shu1);
    scanf("%s",shu2);
    int n1=strlen(shu1);
    int n2=strlen(shu2);
    int js1=1,js2=1;
    for(int i=n1-1;i>=0;--i)
    {
        c1[js1]=shu1[i]-0;
        js1++;
    }
    for(int i=n2-1;i>=0;--i)
    {
        c2[js2]=shu2[i]-0;
        js2++;
    }
    int sum=1;
    js1--; js2--;
    while(sum<=js1||sum<=js2)
    {
        ans[sum]+=c1[sum]+c2[sum];
        if(ans[sum]>=10)
        {
            ans[sum]-=10;
            ans[sum+1]+=1;
        }
        sum++;
    }
    while(ans[sum]==0&&sum!=1) sum--;
    for(int i=sum;i>=1;--i)
        printf("%d",int(ans[i]));
    return 0;
}
高精加

 

高精度计算

原文:https://www.cnblogs.com/poi-bolg-poi/p/10827841.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!