题目描述 Description
加减法是计算中的基础运算,虽然规则简单,但是位数太多了,也难免会出错。现在的问题是:给定任意位数(不超过1000位)的加减法算式,请给出正确结果。为提高速度,保证给定运算的结果均为正整数。
 输入输出格式 Input/output
输入格式:
一行:一个加法或减法的表达式
输出格式:
一个正整数,表示计算的结果(不可以有前导0)
 输入输出样例 Sample input/output
样例测试点#1
输入样例:
12345678+111
输出样例:

123456789

思路:这题的数据量很大,有1000位,如果用int或longlong类型的直接计算是不可取的,必须用高精度算法。
这里可以分为步来算:
①用字符串读入数组
②扫描一遍数组,把操作符前后的两段存入两个数组
③利用高精度加减法计算两数组之和或之差存入a数组或b数组(你想怎么样都行)
④for循环输出(倒序)
补充:高精度算法是指参与运算的数(加数,减数,因子……)范围大大超出了标准数据类型(整型,实型)能表示的范围的运算
代码如下:
 #include<stdio.h>
#include<string.h>
int a[]={},b[]={};
int i,ka,kb,k,c,temp;
char s[],ch;
void plus()//高精度加法函数
{
for(i=;i<k;i++)
{
a[i]=a[i]+b[i]+c;//按位加
if(a[i]>=)//处理进位(满十进一)
{
a[i]=a[i]%;
c=;
}
else c=;
}
if(c>)
{
a[k]=c;
k++;
}
}
void minus()//高精度减法函数
{
for(i=;i<ka;i++)
{
if(a[i]<b[i])//判断这一位计算是否要借位
{
c=;
a[i+]--;
}
else
c=;
a[i]=a[i]+c*-b[i];//计算这一位的结果
k=ka;
while(a[k-]==&&k>)
k--;
}
}
int main()
{
scanf("%s",s);
k=;
while((s[k]!='+')&&(s[k]!='-'))//以运算符为界,分开两个操作数,期前部分计入数组a
{
a[k]=s[k]-'';
k++;
}
ch=s[k];//记录操作符
ka=k;//记录操作符当前位置
kb=;
k++;//跳过继续
while(k<strlen(s))//运算符后部分计入数组b
{
b[kb]=s[k]-'';
k++;
kb++;//记录运算符后部分的位数
}
if(ka>=kb) k=ka;//取a和b的最大长度,以便进行按位计算
else k=kb;
for(i=;i<ka/;i++)//读入是从高位到低位的顺序,计算之前应该反序
{
temp=a[i];
a[i]=a[ka-i-];
a[ka--i]=temp;
}
for(i=;i<kb/;i++)//读入是从高位到低位的顺序,计算之前应该反序
{
temp=b[i];
b[i]=b[ka-i-];
b[ka--i]=temp;
}
c=;//进位初始化
if(ch=='+')//传入加法函数
plus();
else //传入减法函数
minus();
for(i=k-;i>=;i--)//按倒序输出结果
{
printf("%d",a[i]);
}
printf("\n");
return ;
}
 
 

大数据加减(Big data addition and subtraction)的更多相关文章

  1. [Swift]LeetCode592. 分数加减运算 | Fraction Addition and Subtraction

    Given a string representing an expression of fraction addition and subtraction, you need to return t ...

  2. 大整数加减运算的C语言实现

    目录 大整数加减运算的C语言实现 一. 问题提出 二. 代码实现 三. 效果验证 大整数加减运算的C语言实现 标签: 大整数加减 C 一. 问题提出 培训老师给出一个题目:用C语言实现一个大整数计算器 ...

  3. [Aaronyang] 写给自己的WPF4.5 笔记6[三巴掌-大数据加载与WPF4.5 验证体系详解 2/3]

    我要做回自己--Aaronyang的博客(www.ayjs.net) 博客摘要: Virtualizing虚拟化DEMO 和 大数据加载的思路及相关知识 WPF数据提供者的使用ObjectDataPr ...

  4. WPF 大数据加载过程中的等待效果——圆圈转动

    大家肯定遇到过或将要遇到加载大数据的时候,如果出现长时间的空白等待,一般人的概念会是:难道卡死了? 作为一个懂技术的挨踢技术,即使你明知道数据量太大正在加载,但是假如看不到任何动静,自己觉得还是一种很 ...

  5. DevExpress ChartControl大数据加载时有哪些性能优化方法

    DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等) ...

  6. asp.net中TreeView的大数据加载速度优化

    由于数据量太大,加载树时间很长,所以进行了优化 前台 .aspx <asp:Panel ID="Panel2" runat="server" Height ...

  7. 大数据除法(Large data division)

    题目描述 Description 除法是计算中的基础运算,虽然规则简单,但是位数太多了,也难免会出错.现在的问题是:给定任意位数(足够大就可以啦O(∩_∩)O)的一个被除数,再给定一个long lon ...

  8. javascript数据加减问题

    需要parseInt把获取到的html(),text()的值转换为数字型,然后进行加减乘除操作就可以了:

  9. PayPal高级工程总监:读完这100篇论文 就能成大数据高手(附论文下载)

    100 open source Big Data architecture papers for data professionals. 读完这100篇论文 就能成大数据高手 作者 白宁超 2016年 ...

随机推荐

  1. Mammoth官方文档翻译

    用于.NET的.docx转HTML的Mammoth Mammoth可用于将.docx文档(比如由Microsoft Word创建的)转换为HTML.Mammoth致力于通过文档中的语义信息生成简洁的H ...

  2. 第一百一十七节,JavaScript,DOM元素尺寸和位置

    学习要点: 1.获取元素CSS大小 2.获取元素实际大小 3.获取元素周边大小 本章,我们主要讨论一下页面中的某一个元素它的各种大小和各种位置的计算方式,以便更好的理解. 一.获取元素CSS大小 1. ...

  3. [Q]pdfFactory打印机纸张方向设置为横向

    不推荐更改pdfFactory打印机默认纸张方向(默认为横向),更改后可能导致不必要的麻烦(pdfFactory要求所定义的纸张方向与实际的纸张方向需一致,因此若更改为横向,则纸张宽度的定义需大于纸张 ...

  4. linux安装GraphicsMagick

    下载GraphicsMagick-1.3.21.tar.gz 解压:tar -zxvf GraphicsMagick-1.3.21.tar.gz cd /usr/local/GraphicsMagic ...

  5. python hmac-sha1

    def getSignature(Token,paramss1): s = getParam(paramss1) print(s) # for k, v in paramss1.items(): # ...

  6. Dynamics CRM 相关资料

    links: 1.The Microsoft Dynamics CRM Team Blog 2.申请试用Dynamics CRM 2013 http://www.microsoft.com/zh-cn ...

  7. F4IF_FIELD_VALUE_REQUEST 和 F4IF_INT_TABLE_VALUE_REQUEST的不同

    F4IF_FIELD_VALUE_REQUEST 和 F4IF_INT_TABLE_VALUE_REQUEST的不同 F4IF_FIELD_VALUE_REQUEST主要功能是将表里的字段对应的sea ...

  8. 【Python之路】第五篇--Python基础之杂货铺

    字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. 1.百分号方式 ...

  9. redirect-action

    功能: 点击login , redirect 到hello.jsp 显示 "hello" 点击redirect, redirect 到 error.jsp 显示 "err ...

  10. MD5 .net与PHP加密值一样的加密代码

    .net 代码 using System.Security.Cryptography; /// <summary> /// 返回大写形式的MD5加密 /// </summary> ...