表达式计算系列【未完】

P1040 表达式计算

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

描述

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

输入格式

仅一行,即为表达式

输出格式

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

测试样例1

输入

1+1

输出

2

备注

表达式总长度<=1500



 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4
 5 string ans(1501, ‘0‘);
 6
 7 void pl(const string& s, size_t& l)
 8 {
 9     int jw = 0;
10     for (size_t i = 0; i<l; ++i)
11     {
12         int x = (ans[i] - ‘0‘) + (s[i] - ‘0‘) + jw;
13         jw = 0;
14         if (x>9)
15         {
16             ans[i] = (x - 10) + ‘0‘;
17             ++jw;
18         }
19         else
20             ans[i] = x + ‘0‘;
21     }
22     while (jw)
23     {
24         int x = ans[l] - ‘0‘ + jw;
25         jw = 0;
26         if (x>9)
27         {
28             ++jw;
29             ans[l] = (x - 10) + ‘0‘;
30             ++l;
31         }
32         else
33             ans[l] = x + ‘0‘;
34     }
35 }
36 inline size_t max(const size_t& a, const size_t& b)
37 {
38     return a > b ? a : b;
39 }
40 int main()
41 {
42     unsigned int c;
43     string cc;
44     cc.clear();
45     size_t len = 0;
46     while ((c=getchar())!=‘\n‘)
47     {
48         if (c != ‘+‘)
49             cc += c;
50         else
51         {
52             size_t p = cc.size();
53             for (size_t i = 0; i<p / 2; ++i)
54             {
55                 unsigned int temp = cc[i];
56                 cc[i] = cc[p - i - 1];
57                 cc[p - i - 1] = temp;
58             }
59             pl(cc, p);
60             len = max(len,p);
61             cc.clear();
62         }
63     }
64     size_t p = cc.size();
65     for (size_t i = 0; i<p / 2; ++i)
66     {
67         unsigned int temp = cc[i];
68         cc[i] = cc[p - i - 1];
69         cc[p - i - 1] = temp;
70     }
71     pl(cc, p);
72     for (string::reverse_iterator i = ans.rend() - len; i != ans.rend(); ++i)
73         cout << *i;
74     cout << endl;
75     return 0;
76 }

解法一

//解法一尚未调试完成仅供思路

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 using namespace std;
 6 int ans[1501],num[1501],ansl=0;
 7 string str1;
 8 void get(int x)
 9 {
10     for(int i=0;i<x;i++)
11     {
12         ans[i]+=num[i];
13     }
14     ansl=max(ansl,x-1);
15     for(int i=0;i<ansl;i++)
16     {
17         ans[i+1]+=ans[i]/10;
18         ans[i]%=10;
19     }
20     if(ans[ansl]>0)++ansl;
21 }
22 void add()
23 {
24     int i=0;
25     int x=str1.length();
26     while(x--)
27     {
28         if(str1[x]==‘+‘)
29         {
30            get(i);
31            i=0;
32            memset(num,0,sizeof(num));
33            }
34         else num[i++]=str1[x]-48;
35     }
36     get(i);
37 }
38 int main()
39 {
40    cin>>str1;
41    add();
42    for(int i=ansl-1;i>=0;i--)
43       cout<<ans[i];
44    return 0;
45 }

解法二



P1041 表达式计算2

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

描述

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

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

输入格式

仅一行,即为表达式

输出格式

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

测试样例1

输入

1+1-1

输出

1

备注

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


#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int ans[1501],num[1501],ansl=0;
string str1;
void add(int x)
{
    for(int i=0;i<x;i++)
    {
        ans[i]+=num[i];
    }
    ansl=max(ansl,x-1);
    for(int i=0;i<ansl;i++)
    {
        ans[i+1]+=ans[i]/10;
        ans[i]%=10;
    }
    if(ans[ansl]>0)++ansl;
}
void jian(int x)
{
    for(int i=0;i<x;i++)
    {
        if(ans[i]<num[i])
        {
            ans[i]+=10;
            ans[i+1]--;
        }
        ans[i]-=num[i];
    }
}
void get()
{
    int i=0;
    int x=str1.length();
    while(x--)
    {
        if(str1[x]==‘+‘)
        {
           add(i);
           i=0;
           memset(num,0,sizeof(num));
           }
        else if(str1[x]==‘-‘)
        {
            jian(i);
            i=0;
            memset(num,0,sizeof(num));
        }
        else num[i++]=str1[x]-48;
    }
    add(i);
}
int main()
{
   cin>>str1;
   get();
   for(int i=ansl-1;i>=0;i--)
      cout<<ans[i];
   return 0;
}



P1042 表达式计算3

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

描述

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

在这里,"/"为整除

最终结果为正整数,数据保证不需要使用高精度!

输入格式

仅一行,即为表达式

输出格式

仅一行,既为表达式算出的结果 结果小于maxlongint,且整个计算的过程中,也不会超过maxlongint

测试样例1

输入

2^3+1

输出

9

备注

表达式总长度<=20


时间: 2024-10-24 16:25:05

表达式计算系列【未完】的相关文章

洛谷 P1449 后缀表达式 Label:表达式计算系列

题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.[email protected].’@’为表达式的结束符号.‘.’为操作数的结束符号. 输入输出格式 输入格式: 输入:后缀表达式 输出格式: 输出:表达式的值 输入输出样例 输入样例#1: 3.5.2.-*[email protected] 输出样例#1: 1

MongoDB基础教程系列--未完待续

最近对 MongoDB 产生兴趣,在网上找的大部分都是 2.X 版本,由于 2.X 与 3.X 差别还是很大的,所以自己参考官网,写了本系列.MongoDB 的知识还是很多的,本系列会持续更新,本文作为目录篇,方便阅读,有问题大家一块交流哈.多谢大家关注,转载请注明出处,谢谢! MongoDB基础教程系列--第一篇 进入MongoDB世界 MongoDB基础教程系列--第二篇 MongoDB基本操作(一) MongoDB基础教程系列--第三篇 MongoDB基本操作(二) MongoDB基础教程

把握linux内核设计思想系列(未完待续......)

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 把握linux内核设计思想(一):系统调用 把握linux内核设计思想(二):硬中断及中断处理 把握linux内核设计思想(三):下半部机制之软中断 把握linux内核设计思想(四):下半部机制之tasklet 把握linux内核设计思想(五):下半部机制之工作队列及几种机制的选择 把握linux内核设计思想(六):内核时钟中断 把握linux内核设计思想(七):内核定时器和

Python核心编程(第二版) 第二章习题答案 未完待续

2-2.程序输出.阅读下面的Python脚本.#!/usr/bin/env python1 + 2 * 4(a)你认为这段脚本是用来做什么的?(b)你认为这段脚本会输出什么?(c)输入以上代码,并保存为脚本,然后运行它,它所做的与你的预期一样吗?为什么一样/不一样?(d)这段代码单独执行和在交互解释器中执行有何不同?试一下,然后写出结果.(e)如何改进这个脚本,以便它能和你想象的一样工作?答:(a)这段脚本是用来计算表达式的值(b)脚本会输出9(c)保存为脚本,运行后没有输出.和自己预期不一样.

PHP 实现字符串表达式计算

什么是字符串表达式?即,将我们常见的表达式文本写到了字符串中,如:"$age >= 20",$age 的值是动态的整型变量. 什么是字符串表达式计算?即,我们需要一段程序来执行动态的表达式,如给定一个含表达式的字符串变量并计算其结果,而表达式字符串是动态的,比如为客户A执行的表达式是 $orderCount >= 10,而为客户B执行的表达式是 $orderTotal >= 1000. 场景在哪儿?同一份程序具有完全通用性,但差异就其中一个表达式而已,那么我们需要将其

细菌觅食优化算法:理论基础,分析,以及应用(未完)

原作者:Swagatam Das,Arijit Biswas,Sambarta Dasgupta,和Ajith Abraham  [摘 要]细菌觅食优化算法(Bacterial foraging optimization algorithm[BFOA])已经被分布式优化和控制的同行们当作一种全局性的优化算法接受.BFOA是由大肠杆菌的群体觅食行为所启发而总结出来 的.BFOA已经吸引了足够多的研究者的注意,由于它出现在解决真实世界中一些应用领域上优化问题的高效性.E.coli 的群体策略的生物基

iOS开发系统版本适配(未完待续。。。)

1.iOS9引入了新特性App Transport Security (ATS).新特性要求App内访问的网络必须使用HTTPS协议:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是强制增强数据访问安全,而且 系统 Foundation 框架下的相关网络请求,将不再默认使用 Http 等不安全的网络协议,而默认采用 TLS 1.2.简单的说,就是苹果限制了HTTP协议,如果你用的是http协议的,要处理请参考我的另一文章,iOS9网络适配 2.iOS9

蓝桥杯 算法训练 ALGO-156 表达式计算

算法训练 表达式计算 时间限制:1.0s   内存限制:256.0MB 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的值. 样例输入 1-2+3*(4-5) 样例输出 -4 数据规模和约定 表达式长度不超过100,表达式运算合法且运算过程都在int内进行. 题目解析: 运算优先级: 括号 → 乘除 → 加减 例如 1-2+3*(4-5) (1)计算(4-5),表达式变为  1-2+3*-1 (2

计算机网络学习(4):网络协议与标准 (未完)

最知名的网络协议就是TCP/IP协议了.事实上,TCP/IP协议是一个协议集,由很多协议组成.TCP和IP 协议是这个协议集中两个,TCP/IP协议集是用这两个协议来命名的. TCP/IP协议集中的每一个协议涉及的功能,都用程序来实现.TCP协议和IP协议有对应的TCP程序和IP程 序. 根据TCP协议我们了解到,网络协议是一个约定,该约定规定了: ① 实现这个协议的程序要完成什么功能: ② 如何完成这个功能: ③ 实现这个功能需要的通讯的报文包的格式. 如果一个网络协议涉及了硬件的功能,通常就