题目描述 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. 免费SSL证书申请

    https://buy.wosign.com/free/#apply 和 http://www.startssl.com/

  2. 解决Intellij Idea里tomcat启动报The JRE_HOME environment variable is not defined correctly的错误

    创建一个maven项目后想启动tomcat测试一下新建的maven项目,结果一直报The JRE_HOME environment variable is not defined correctly, ...

  3. java.lang.IllegalArgumentException: View not attached to window manager

    公司项目线上bug: java.lang.IllegalArgumentException: View not attached to window manager at android.view.W ...

  4. 关于 Unchecked cast from Iterator to Iterator String 提示

    遇到个这个提示:Unchecked cast from Iterator to Iterator String Iterator<String> keys = data.keys(); 修 ...

  5. CodeForces 340E Iahub and Permutations

    容斥原理,组合数. 找出有$cnt$个数字还有没放,那么总方案数就是$cnt!$. 总方案数里面包含了正确的和非正确的,我们需要将非正确的删去. 先删去$1$个数字$a[i]=i$的情况,发现会多删, ...

  6. 用 monitorix 开启linux图形化监控

    # yum install monitorix # service monitorix starthttp://host:8080/monitorix/

  7. Opencv+MFC获取摄像头数据,显示在Picture控件

    分为两步:OpenCV获取摄像头数据+图像在Picture上显示 第一步:OpenCV获取摄像头数据 参考:http://www.cnblogs.com/epirus/archive/2012/06/ ...

  8. mac xcode 快捷键

    shift + cmd + n     新建项目 cmd + n             新建文件 视图 option + cmd + 回车 打开助理编辑器 cmd + 回车           显示 ...

  9. html绑定

    目的 html绑定可以绑定DOM元素内的HTML内容. 示例: <div data-bind="html: details"></div> <scri ...

  10. Java Script 学习笔记

    JS编程习惯类: 1. 命名 著名的变量命名规则 只是因为变量名的语法正确,并不意味着就该使用它们.变量还应遵守以下某条著名的命名规则: Camel 标记法 首字母是小写的,接下来的字母都以大写字符开 ...