时间: 1000ms / 空间: 131072KiB / Java类名: Main

描述

给出一个表达式,其中运算符仅包含+,-,要求求出表达式的最终值

保证数据中不会出现负数,并且同时保证,如果你按从左到右的顺序计算,同样也不会出现负数的情况。

输入格式

仅一行,即为表达式

输出格式

仅一行,既为表达式算出的结果

测试样例1

输入

1+1-1

输出

1

备注

表达式总长度<=255
表达式中数字位数<=255

一道大数加减法的问题,完全可以把减法看成加法,相加相减时都不考虑进位借位,到最后统一进位借位处理,这样会更简单一些。

举个例子:5247+823-299-11
                  7  4  2  5
                  3  2  8
                 -9 -9 -2
                 -1 -1
         =      0 -4  8  5

最后看哪一位上>=10或者<0,在进行借位和进位的运算。第二个数-4小于0,就给他加上10,前面的8减去1,结果就是0675,逆序输出得到5760.

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char b[260],s[260];
int a[260][260];
void add(int x,int y)
{int i;for(i=0; i<256; i++)a[y][i]=a[x][i]+a[y][i];
}
void mult(int x,int y)
{int i;for(i=0; i<256; i++)a[y][i]=a[x][i]-a[y][i];
}
int main()
{int i,j,k,n,m;while(gets(s)){memset(a,0,sizeof(a));int len=strlen(s);int p=0,q=0;for(i=len-1; i>=0; i--){if(s[i]=='+'||s[i]=='-'){b[q++]=s[i];p=0;}else a[q][p++]=s[i]-'0';}for(j=q-1; j>=0; j--){if(b[j]=='+')add(j+1,j);else mult(j+1,j);}for(i=0; i<256; i++){if(a[0][i]<0){while(a[0][i]<0){a[0][i]+=10;a[0][i+1]-=1;}}else if(a[0][i]>=10){while(a[0][i]>=10){a[0][i]-=10;a[0][i+1]+=1;}}}int f=0;for(i=256; i>=0; i--){if(a[0][i]>0){k=i;f=1;break;}}if(f==0)printf("0");elsefor(i=k; i>=0; i--)printf("%d",a[0][i]);printf("\n");}return 0;
}

Tyvj 1041 表达式计算2相关推荐

  1. 零起点学算法07——复杂一点的表达式计算

    零起点学算法07--复杂一点的表达式计算 Description 下面你来计算一个复杂一点的计算表达式 Input 没有输入 Output 输出表达式的值,保留2位小数 题目分析:根号要用sqrt来算 ...

  2. .NET平台开源项目速览(8)Expression Evaluator表达式计算组件使用

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Expression Evaluator验证组件.那里只是概述了一下,并没有对其使用和强大功能做 ...

  3. 蓝桥杯-表达式计算(java)

    算法训练 表达式计算 时间限制:1.0s 内存限制:256.0MB问题描述输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除.输入格式输入一行,包含一个表达式.输出格式输出这个表达 ...

  4. [算法 笔记]字符串表达式计算(简易版)

    题目:编写一个函数,计算字符串中表达式的值,参数中只包含计算符:+,-,*,/等.例如,str="10+50+2*6/3",result=64. 解析: 考虑算术表达式计算规则: ...

  5. 中缀表达式计算、后缀表达式计算、中缀转后缀

    代码来源 : bilibili网站 :https://www.bilibili.com/video/av91996256?from=search&seid=174497233083020298 ...

  6. 算法笔记_044:表达式计算求值(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的 ...

  7. 2017年第八届蓝桥杯C/C++ C组国赛 —— 第三题:表达式计算

    标题:表达式计算 虽然我们学了许久的程序设计,但对于简单的四则混合运算式,如果让我们完全白手起家地编程来解析,还是有点棘手. 这里,我们简化一下问题,假设只有加法和乘法,并且没有括号来改变优先级. 再 ...

  8. 2017年第八届蓝桥杯C/C++ A组国赛 —— 第三题:表达式计算

    标题:表达式计算 虽然我们学了许久的程序设计,但对于简单的四则混合运算式,如果让我们完全白手起家地编程来解析,还是有点棘手. 这里,我们简化一下问题,假设只有加法和乘法,并且没有括号来改变优先级. 再 ...

  9. 栈在表达式计算过程中的应用

    栈在表达式计算过程中的应用 :建立操作数栈和运算符栈.运算符有优先级. 规则: 自左至右扫描表达式,凡是遇到操作数一律进操作数栈. 当遇到运算符时,如果它的优先级比运算符栈栈顶元素的优先级高就进栈.反 ...

最新文章

  1. 「云毕业照」刷爆朋友圈!AI人脸融合技术谁家强?
  2. es6学习 -- 解构赋值
  3. c#中Show和Showdialog的区别分析
  4. Jenkins自定义主题教程
  5. mysql不显示默认密码_免安装版mysql不出现默认密码状况(基于mysql8.0)
  6. zookeeper学习笔记001-Address already in use: bind启动报错
  7. mybatis映射多对多查询实现
  8. TensorFlow学习笔记——TensorFlow入门
  9. Bootstrap学习之三:使用排版
  10. (四) Session管理 --《springboot与shiro整合》
  11. jquery中object对象循环遍历的方法
  12. qt在linux下编译资源文件,linux下Qt qrc文件的编写与应用
  13. 两台计算机如何打印机共享打印机,两台计算机如何共享一个打印机?
  14. 一个IT公司技术总监的职责
  15. ngrinder启动项目时报错Error creating bean with name ‘emf‘ defined in org.ngrinder.infra.config.DatabaseConf
  16. gis平移至所选要素_ArcGIS中如何实现矢量数据平移
  17. 基于曲线插值的规划方法(Interpolating Curve Planners)
  18. Pacemaker+Corosync+Mfs+Iscsi+Fence实现高可用和Fence管理
  19. 在线考试模拟系统都有哪些功能,和优点呢?
  20. python实现回合制对战小游戏

热门文章

  1. 对话框AlertDialog的基本使用(新手)
  2. PHP写个Web小工具来监控你的加密币
  3. 自制贴纸图案大全图片_贴纸的制作方法
  4. 杭电_ACM_汉诺塔VII
  5. java file outside of source root - IDEA中的java文件突然出现这样的提示
  6. 第二周 Turtle库的使用
  7. 托管代码和非托管代码的区别
  8. 计算机实战项目、毕业设计、课程设计之 含论文+辩论PPT+源码等]微信小程序基于微信小程序的美容预约+后台管理系统
  9. php泡点,夜猫首页更新PHP程序 是一个应用于网站
  10. CoCa-GAN阅读笔记