题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 失误原因(初次提交分数) |
---|---|---|---|---|---|
Red and Blue Balls | ★★☆☆☆ | 答案正确 | 100 | 2015-02-28 12:47:18 | 算法错误(1) |
给出一个栈,按照步骤循环操作:
把栈顶的所有红球pop; 把栈顶的一个蓝球变红; 用蓝球填满栈。
给初始状态,求变成全红状态。
一开始以为是模拟,但实际上红球等同于1,蓝球等同于0,是个二进制+1的过程。因此只需要把 111111....1111-当前状态 输出即可。
399B.cpp代码已折叠
展开折叠内容
|
---|
#include<cstdio> #include<iostream> #include<string> #include<vector> #include<iomanip> #include<algorithm> #include<cstring> #include<cmath> #include<bitset> #include<set> #include<stack> #include<sstream> #include<utility> using namespace std; //数据类型// #define llu unsigned long long #define lld long long //定义默认类型// typedef lld num; #define dsi(n) num n;scanf("%lld",&n) #define si(n) scanf("%lld",&n) //其它// #define reset(x) memset(x,0,sizeof(x)) #define ci const num& #define sqr(x) ((x)*(x)) #define f(i,n) for(num i=1;i<=n;++i) #define ff(i,r,n) for(num i=r;i<=n;++i) #define fi(n) f(i,n) #define f0(i,n) for(num i=0;i!=n;++i) #define fd(i,n) for(num i=n;i>=1;--i) #define foreach(i,s) for(typeof(s.begin()) i=s.begin();i!=s.end();++i) #define rforeach(i,s) for(typeof(s.rbegin()) i=s.rbegin();i!=s.rend();++i) #define iforeach(i,s) int idx=0;for(typeof(s.begin()) i=s.begin();i!=s.end();++i,++idx) #define Vector2 pair<num,num> #define vector2(x,y) make_pair(x,y) #define x first #define y second string s; int main () { dsi(n); num t=0; cin>>s; rforeach(i,s) { t<<=1; if(*i=='R')t|=1; } printf("%I64d",((num(1)<<n)-1)-t); return 0; } |