Many Formulas(暴力+有技巧)
题目链接: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(暴力+有技巧)相关推荐
- 最新QQ部落暴力截流技巧,你会了吗?
这篇文章早就打算写了,直到TX搞死了这个功能,我才开始慌了.心想:这难道是冥冥中暗示我想到什么就该立即做吗? 这拖延症是该治治了. 心理学的书籍也看看了不少了,对拖延症也有了点认识,不过还是百度搜了一 ...
- HNOI 2016 暴力之旅
Day1 T1 看到这题,我瞬间想到用暴力做. 小小思考了一下,我便打起了暴力. 是这样的: 题目每次给出了俩点,和一个限制ta和tb,于是乎,我便从一个点开始,往周围延伸.延伸的标准是酱紫的,一条线 ...
- python数据结构题目_《数据结构与算法Python语言描述》习题第二章第三题(python版)...
ADT Rational: #定义有理数的抽象数据类型 Rational(self, int num, int den) #构造有理数num/den +(self, Rational r2) #求出本 ...
- 2017陕西省网络空间安全技术大赛_Crypto_crypt1_Writeup
题目地址 中间人相遇攻击 题目给了一份这样的RC2加密的代码 # -*- coding: utf-8 -*- from Crypto import Random from Crypto.Cipher ...
- 2018浙江第十五届ACM省赛题解(待补完)
题目链接 http://acm.zju.edu.cn/onlinejudge/showContestProblems.do?contestId=378 没有solution的题目待补 A 暴力 无技巧 ...
- 2019杭师大程序设计竞赛 赛后感悟
杭师大 进入杭师大给我的第一感受就是美!学校的环境很好,也许是三月的气候宜人,让我有那么一瞬爱上杭师大的感觉,不过的确就是这样,一所110年校史的师范学校有着足够的历史沉淀,不像我金科--它给我的感觉 ...
- OSChina 周三乱弹 ——你最想在墓碑上被写些什么
2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2017)请戳(这里) [今日歌曲] @Cobbage 分享许巍的单曲<曾经的你>: <曾经 ...
- 高德地图打字界面_打字稿界面综合指南
高德地图打字界面 There are many reasons to like TypesScript because of the many advantages it has over JavaS ...
- php pdo ttfb慢,接口速度慢问题查找(TTFB时间长)
前些天自己写了一个网站,但是发现接口的速度按超级慢,业务逻辑并不复杂,原因究竟在哪呢? 首先说一下,我的数据库和项目均在同一台服务器上,按道理来说,接口访问本地的数据库应该会很快才对. 后来我发现线上 ...
最新文章
- python中文解释-python注释不能识别中文
- 3.NIO_Buffer缓冲区
- 解构电商产品——订单系统(一)
- TortoiseSVN 的 bin 目录下面没有 svn.exe(已测试)
- java中ThreadLocalRandom的使用
- wms地图绘制工具_GeoServer地图开发解决方案(四):发布Web地图服务(WMS)篇
- android socket 框架c#,C#与Android Socket通信
- android xml 设置图片,android 的几种图片效果xml写法
- Spring Boot系列教程八: Mybatis使用分页插件PageHelper
- perl 调用 shell 文件 防止出问题,最好写绝对路径
- 测试用例的优先级概念
- Postman 汉化教程
- Adreno GPU上Android 游戏开发介绍 (3)
- 统计学习方法详解之第十三章 无监督学习概论
- install Wine + 迅雷 in Fedora 31
- 吕 思 伟 ---- 潘 爱 民 :: ATL 介 绍( 一)
- GeForce RTX 3090深度学习测评
- 拷贝原站点有用文章(合并页)
- TCP/IP 面试题整理
- 行人违章是否该罚月薪1 3