直接枚举等号所在位置,然后左右两边用两个MAP来记录组成和的个数,然后运用乘法原理得到答案。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<set>
#include<map>
#include<cstring>
#include<vector>
#include<string>
#define LL long long
using namespace std;char s[20];int len;map<long long,int>fmp, tmp;long long get(int x, int y) {long long ret = 0;for (int i = x; i <= y; ++i) {ret = ret * 10 + s[i] - '0';}    return ret;
}void cal(int a, int b, map<long long,int>&mp) {if (a == b) {++mp[s[a]-'0'];return;}int mask = 1 << (b-a), last;for (int i = 0; i < mask; ++i) {long long temp = 0;last = a;for (int j = 0; j < (b-a); ++j) {if (i & (1 << j)) {temp += get(last, a + j);last = a + j + 1;}}temp += get(last, b);++mp[temp];}
}long long solve(int x) {long long ret = 0;fmp.clear(), tmp.clear();map<long long, int>::iterator it;cal(0, x, fmp);cal(x+1, len-1, tmp);for (it = fmp.begin(); it != fmp.end(); ++it) {ret += (long long)(it->second) * (long long)tmp[it->first];}return ret;
}int main(  )
{long long ret;while (scanf("%s", s), s[0] != 'E') {ret = 0;len = strlen(s);for (int i = 0; i <= len-2; ++i) {// 枚举等号所在的位置ret += solve(i);}printf("%I64d\n", ret);}return 0;
}

转载于:https://www.cnblogs.com/Lyush/archive/2012/09/22/2698435.html

HDU-4403 A very hard Aoshu problem 枚举相关推荐

  1. HDU 4403 A very hard Aoshu problem DFS

    problem statement 这道题给我们一个不超过15位的整数 让我们在其中加等号或者加号 如果加完符号后符合计算结果 那么计数 最后输出所有的情况 problem analysis 这道题其 ...

  2. 【hdu4403】 A very hard Aoshu problem dfs

    传送门:嘿原题在这 题意: 给一串数字,在里面加一个等于号和若干加号,问有多少种方案合法. 题解: 枚举=位置,搜索+位置 //hdu4403 A very hard Aoshu problem // ...

  3. hdu 2058 解题报告 - The sum problem

    hdu 2058 解题报告 - The sum problem 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2058 等差求和公式: Sn=(a1+aN ...

  4. HDU 4282 A very hard mathematic problem 二分题目

    http://acm.hdu.edu.cn/showproblem.php?pid=4282 题解:http://www.cnblogs.com/E-star/archive/2012/09/11/2 ...

  5. HDU 5944 Fxx and string(暴力/枚举)

    传送门 Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Othe ...

  6. hdu 6149 Valley Numer II(状压+ 枚举)

    Valley Numer II Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. HDU 6411 带劲的and和【枚举贡献】

    HDU 6411 带劲的and和: 分析:写了好久了,突然想补一下博客... 公式看完过后,就是求一个联通图内任意两点之间的max(vi,vj)×(vi&vj).直观感受是n*n的做法,从枚举 ...

  8. hdu 3509 Buge's Fibonacci Number Problem(矩阵乘法+二项式)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3509 Buge's Fibonacci Number Problem Time Limit: 10000/ ...

  9. HDU 6833 A Very Easy Math Problem

    A Very Easy Math Problem 推式子 ∑ai=1n∑a2=1n⋯∑ax=1n(∏j=1xajk)f(gcd(a1,a2,-,ax))×gcd(a1,a2,-,ax)\sum_{a_ ...

最新文章

  1. 人生苦短,我用PyCharm(附链接)
  2. iOS开源程序下载链接整理
  3. 关于更改MYECLIPSE JS 代码背景颜色
  4. Java-J2SE专题复习
  5. linux 进程监听服务 monit 简介
  6. Angular中路由的嵌套-父子路由
  7. 云信小课堂丨简单四步,快速搭建协同办公系统!
  8. Qt 检测第三方软件是否运行、杀死第三方进程
  9. 《学习之道》第六章关注过程,亦培养习惯
  10. MapReduce经典案例——统计单词数
  11. windows phone7 学习笔记14——地理位置服务与反应性扩展框架
  12. 感染新冠后为啥会丧失​嗅觉?最新《细胞》论文终于搞明白了!
  13. LeetCode刷题(Python)——汉明距离
  14. python3颜色代码_python3中布局背景颜色代码分析
  15. KEIL MDK access violation at 0x40021000 : no ‘read‘ permission的一种解决方法
  16. iOS字符串处理笔记(正则表达式、NSScanner扫描、CoreParse解析器)
  17. cisco设备的mib库
  18. 整理百度SEO指南2.0
  19. 97 Three.js 使用 specularMap 设置高光贴图
  20. 确定项目的目的和目标

热门文章

  1. android activity根节点addview_Activity问你4个问题,你敢回答吗?
  2. 字符转char android,android – 如何在kotlin语言中将char转换为ascii值
  3. mysql2008无法启动_SQL Server 2008突然无法正常启动
  4. qt 对话框位置如何确定_在图片上加字,如何确定该用什么字体、字体的颜色和放置的位置?...
  5. centos ipvsadm 规则保存_从VAR精神到判罚规则:终场哨声后的VAR点球,到底是否合理?...
  6. mysql 查询任务_mysql中怎样显示服务器正在执行的sql任务
  7. 微信支付本地服务器端,微信支付接口,服务器端处理(新版)
  8. python ssl模块用法详解_一看就懂,Python 日志模块详解及应用!
  9. XR应用场景骤变,一场波及5亿人的新探索开始了
  10. 奔四的听力障碍码农,被开除15次,面试被拒200+次,还要继续干下去吗?