表达式的个数
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-10-28 20:58:41