ECNUOJ 2859 表达式的个数

表达式的个数

Time Limit:5000MS Memory Limit:65536KB
Total Submit:47 Accepted:28

Description 

世情薄,人情恶,雨送黄昏花易落。晓风干,泪痕残,欲笺心事,独语斜阑。难!难!难!

人成各,今非昨,病魂常似秋千索。角声寒,夜阑珊,怕人寻问,咽泪装欢。瞒,瞒,瞒!

读此词思绪万千。有些事注定伤感,有些题注定简单。比如给定123456789在数字中添加+,-,或者什么都不加,会得到一个表达式,当然你肯定会算这个表达式的值。然后如果给你这个表达式的值,你会求有多少个不同的表达式能够得到这个值呢?

Input 

多组测试数据,每组测试数据一行,含一个整数,为表达式的值

Output 

输出得到这个值的不同表达式的个数。

Sample Input 

123456789

12345687

-123456789

1241

Sample Output 

1
1
0
3

Source

解题:搜索。。。ECNU的题目哥总是琢磨不透题意。。。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4 LL value;
 5 map<LL,int>mp;
 6 void dfs(LL sum,int p) {
 7     if(p > 9) {
 8         mp[sum]++;
 9         return;
10     }
11     LL ret = 0;
12     for(int i = p; i <= 9; ++i) {
13         ret = ret*10 + i;
14         dfs(sum + ret,i + 1);
15         if(p > 1) dfs(sum - ret,i + 1);
16     }
17 }
18 int main() {
19     ios::sync_with_stdio(false);
20     dfs(0,1);
21     while(cin>>value) cout<<mp[value]<<endl;
22     return 0;
23 }

时间: 2024-08-29 02:10:02

ECNUOJ 2859 表达式的个数的相关文章

Problem D: STL——表达式求值(用的vector没用stack)

Description 给出一个表达式,求出其值.表达式中只存在 +.-.*.三种运算,我们假设表达式是正确的, 且不存在除数为零的情况. Input 第一行输入一个正整数 n(1<=n<=30) ,表示有表达式 n 个数(每个数均小于100),表达式中只有数值(都是大于零的数) 和运算符(包括+.-.*.=四种运算符,其中 = 只在表达式最后,表示一个表达式输出结束,且整个表达式不存在空格) Output 表达式的值(表达式的值不会超出 double 的范围并保留两位小数) Sample I

程序输出小学四则运算表达式,支持真分数四则运算

程序设计思路: 1.运算式的输出格式可以为 数字 运算符 数字,也可以为 数字 运算符 数字 运算符 数字,还可以是更复杂的式子,在此只实现了2-3个数字的运算式. 2.将式子分为两类,第一类为20个,第二类为10个,分别用FOR循环控制输出. 3.第一类式子稍简单,只需通过随机函数将两个数字赋值,中间运算符通过数组下标的随机赋值实现随机性,再通过格式输出即可 4.此时还要考虑运算符为 ‘/’,并且除数为0的情况,这时用if语句设置条件排除即可 5.计算第一类式子结果可以参考计算器的功能代码,用

Delphi 正则表达式之TPerlRegEx 类的属性与方法(2): 关于子表达式

Delphi 正则表达式之TPerlRegEx 类的属性与方法(2): 关于子表达式 // MatchedExpression 与 SubExpressions[0] var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := 'CodeGear Delphi 2007';   reg.RegEx  := 'Delphi';   while reg.MatchAgain do   begin    

tzoj 3231 表达式求值

描述 给一些包含加减号和小括号的表达式,求出该表达式的值.表达式中的数值均为绝对值小于 10 的整数. 输入 第一行为表达式的个数 n,以下 n 行每行有一个表达式.每个表达式的长度不超过 50 个字符. 输出 对每个表达式,输出它的值. 样例输入 3 3-(2+3) -9+8+(2+3)-(-1+4) 0-0 样例输出 -2 1 0 用递归 #include<bits/stdc++.h> using namespace std; char s[55]; int l; int flag; in

javascript(五)表达式

表达式 (expression) JavaScript中的一个短语, JavaScript解释器会将其计算(evaluate) 出一 个结果.程序中的常量是最简单的一类表达式.变量名也是一种简单的表达式,它的值就是赋值给变量的值.复杂表达式是由简单表达式组成的.如数组访问表达式是由一个表示数组的表达式,左方括号,一个整数表达式和右方括号构成.它们锁组成的新的表达式的运算结果是该数组的特定位置的元素值.同样的,函数调用哪个表达式由一个个表示函数对象的表达式和0个或多个参数表达式构成. 将简单表达式

阿里巴巴2015研发工程师笔试题,带答案

欢迎对本文提出补充建议,可以在以下平台上我留言. 个人博客站点:www.anycodex.com/blog/ Csdn博客站点:http://my.csdn.net/?ref=toolbar 微博:http://weibo.com/1958069172/profile?topnav=1&wvr=5&user=1 1.int main(){ fork()||fork(); }共创建几个进程? 答:3个. [知识点] ? 一个现有进程可以调用fork函数创建一个新进程.由fork创建的新进程被

UVA 10312 - Expression Bracketing(数论+Catalan数)

题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=1253">10312 - Expression Bracketing 题意:有n个x,要求分括号,推断非二叉表达式的个数. 思路:二叉表达式的计算方法就等于是Catalan数的,那么仅仅要计算出总数,用总数减去二叉表达式个数.得到的就是非二叉表达式的个数. 那么计算方法是什么呢. 看题目中的图,对于n = 4的情况,能够分为这几种情况来讨论

muParser公式库使用简介( 转)

muParser是一个跨平台的公式解析库,它可以自定义多参数函数,自定义常量.变量及一元前缀.后缀操作符,二元操作符等,它将公式编译成字节码,所以计算起来非常快. 当前版本V1.28,官方网址http://sourceforge.net/projects/muparser/,这里是关于该库使用交流https://sourceforge.net/forum/forum.php?forum_id=462843 它提供两种方式使用,一种是将它编译进你的程序中,使用C++类,另一种是将它编译成共享库,可

go基本数据类型与运算符

GO基本类型1.布尔(bool) 长度:1字节 取值范围:true,false 注意事项:不可用数字代表true或false2.整型(int/uint) 根据平台 肯能为32位或64位3. 8位整型:int8/uint8 长度:1字节 取值范围:-128~127/0~2554.字节型 :byte(uint8别名)5. 16位整型:int16/uint16 长度:2字节 取值范围:-32768~32767/0~655356. 32位整型:int32(rune)/uint32 长度:4字节 取值范围