题目链接:http://exam.upc.edu.cn/problem.php?id=6467

题意:给你一个数字,在数字里任意加+号,问所有情况下,这个sum是多少

我本来想了一种,后来发现这个题真的有意思。

我有4种方法。

第一种:自己写的,枚举    len从1~n。出现的个数和  +号的位置有关。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
char s[100];
int len;
ll f(int pos,int L){ll ret=0,ed=pos+L-1;for(int i=pos;i<=ed;i++){ret=ret*10+(s[i]-'0');}return ret;
}
int main()
{ll n;scanf("%s",s+1);len=strlen(s+1);sscanf(s+1,"%lld",&n);ll ans=0,tmp;for(int i=1;i<=len;i++){for(int j=1;j+i-1<=len;j++){int cur=len-i-1;if(1<j&&j<len-i+1){cur--;}cur=max(0,cur);tmp=f(j,i)*pow(2,cur);ans=ans+tmp;//printf("%d %d %lld\n",i,j,tmp);}}printf("%lld\n",ans);return 0;
}

第二种:运用了二进制来实现,二进制的某一位&1,可以把当前位看作有‘+’号。

#include<bits/stdc++.h>
using namespace std;
char s[1000];
int main()
{scanf("%s",s);int len = strlen(s);int m=(1<<(len-1));long long ans=0,t;for(int i=0;i<m;i++){t=s[0]-'0';for(int j=0;j<len;j++){if(j==len-1||i&1<<j){ans+=t;t=0;if(j==len-1)  break;}t*=10;t+=s[j+1]-'0';}}printf("%lld\n",ans);return 0;
}

第三种的确是我所想的:利用string 加一个'+'来实现。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll x(string s){ll sum=0,tmp=0;for(int i=0;i<s.size();i++){if(s[i]=='+'){sum+=tmp;tmp=0;}else{tmp=tmp*10+s[i]-'0';}}return sum+tmp;
}
int main()
{string s;cin>>s;int len=s.size()-1,a[100]={0};ll sum=0;while(1){string ss;for(int i=0;i<len;i++){a[i+1]+=a[i]/2;a[i]%=2;}if(a[len]){break;}for(int i=0;i<len;i++){ss+=s[i];if(a[i]){ss+="+";}}ss+=s[len];sum+=x(ss);a[0]++;}cout<<sum<<endl;return 0;
}

第四种:BFS

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf=1e6+10;
string st;
long long sum;
struct point{string ss;int po;ll v;
};
void bfs(point pp)
{queue<point>q;q.push(pp);while (!q.empty()){point p=q.front();q.pop();string sss=p.ss;int po=p.po;if (po==st.length()-1){sum+=p.v;continue;}long long v=0;point pt;for (int i=1;po+i<st.length();i++){v=0;string sy=st.substr(po+1,i);for (int j=0;j<sy.length();j++)v=v*10+(sy[j]-'0');//cout<<v<<"%%%%%%%%%%%%%%%%%%%%"<<endl;pt.ss=sy;//cout<<pt.ss<<"$$$$$"<<endl;pt.v=v+p.v;pt.po=po+i;q.push(pt);}   }
}
int main()
{int k,po,cc=0;long long v=0;cin>>st;sum=0;for (int i=1;i<=st.length();i++){point pp;pp.ss=st.substr(0,i);pp.po=i-1;v=0;for (int j=0;j<pp.ss.length();j++){v=v*10+(pp.ss[j]-'0');}pp.v=v;//cout<<pp.v<<" "<<pp.ss<<"+++++"<<endl;bfs(pp);}cout<<sum<<endl;return 0;
} 

Many Formulas(暴力+有技巧)相关推荐

  1. 最新QQ部落暴力截流技巧,你会了吗?

    这篇文章早就打算写了,直到TX搞死了这个功能,我才开始慌了.心想:这难道是冥冥中暗示我想到什么就该立即做吗? 这拖延症是该治治了. 心理学的书籍也看看了不少了,对拖延症也有了点认识,不过还是百度搜了一 ...

  2. HNOI 2016 暴力之旅

    Day1 T1 看到这题,我瞬间想到用暴力做. 小小思考了一下,我便打起了暴力. 是这样的: 题目每次给出了俩点,和一个限制ta和tb,于是乎,我便从一个点开始,往周围延伸.延伸的标准是酱紫的,一条线 ...

  3. python数据结构题目_《数据结构与算法Python语言描述》习题第二章第三题(python版)...

    ADT Rational: #定义有理数的抽象数据类型 Rational(self, int num, int den) #构造有理数num/den +(self, Rational r2) #求出本 ...

  4. 2017陕西省网络空间安全技术大赛_Crypto_crypt1_Writeup

    题目地址 中间人相遇攻击 题目给了一份这样的RC2加密的代码 # -*- coding: utf-8 -*- from Crypto import Random from Crypto.Cipher ...

  5. 2018浙江第十五届ACM省赛题解(待补完)

    题目链接 http://acm.zju.edu.cn/onlinejudge/showContestProblems.do?contestId=378 没有solution的题目待补 A 暴力 无技巧 ...

  6. 2019杭师大程序设计竞赛 赛后感悟

    杭师大 进入杭师大给我的第一感受就是美!学校的环境很好,也许是三月的气候宜人,让我有那么一瞬爱上杭师大的感觉,不过的确就是这样,一所110年校史的师范学校有着足够的历史沉淀,不像我金科--它给我的感觉 ...

  7. OSChina 周三乱弹 ——你最想在墓碑上被写些什么

    2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2017)请戳(这里) [今日歌曲] @Cobbage 分享许巍的单曲<曾经的你>: <曾经 ...

  8. 高德地图打字界面_打字稿界面综合指南

    高德地图打字界面 There are many reasons to like TypesScript because of the many advantages it has over JavaS ...

  9. php pdo ttfb慢,接口速度慢问题查找(TTFB时间长)

    前些天自己写了一个网站,但是发现接口的速度按超级慢,业务逻辑并不复杂,原因究竟在哪呢? 首先说一下,我的数据库和项目均在同一台服务器上,按道理来说,接口访问本地的数据库应该会很快才对. 后来我发现线上 ...

最新文章

  1. python中文解释-python注释不能识别中文
  2. 3.NIO_Buffer缓冲区
  3. 解构电商产品——订单系统(一)
  4. TortoiseSVN 的 bin 目录下面没有 svn.exe(已测试)
  5. java中ThreadLocalRandom的使用
  6. wms地图绘制工具_GeoServer地图开发解决方案(四):发布Web地图服务(WMS)篇
  7. android socket 框架c#,C#与Android Socket通信
  8. android xml 设置图片,android 的几种图片效果xml写法
  9. Spring Boot系列教程八: Mybatis使用分页插件PageHelper
  10. perl 调用 shell 文件 防止出问题,最好写绝对路径
  11. 测试用例的优先级概念
  12. Postman 汉化教程
  13. Adreno GPU上Android 游戏开发介绍 (3)
  14. 统计学习方法详解之第十三章 无监督学习概论
  15. install Wine + 迅雷 in Fedora 31
  16. 吕 思 伟 ---- 潘 爱 民 :: ATL 介 绍( 一)
  17. GeForce RTX 3090深度学习测评
  18. 拷贝原站点有用文章(合并页)
  19. TCP/IP 面试题整理
  20. 行人违章是否该罚月薪1 3

热门文章

  1. Excel 2010 VBA 入门 007 创建和使用数字证书签名
  2. Windows系统下如何安装及使用派克斯软件
  3. 智慧旅游——旅游业的第二次革命
  4. Developing Excel Utilities with VBA
  5. 基于柯西变异的蚁狮优化算法 - 附代码
  6. Appgamekit制作消消乐小游戏(附代码)# 1
  7. 在美国《财富》杂志公布的2008年度全球企业500强排行榜
  8. 以学术论文的口吻介绍直驱式永磁同步发电机。
  9. Java之jsp标签
  10. 微信开发的CreateTime