#include<iostream> #include<cstring> using namespace std; int sum; bool a[60]; int n; int head; int ping(int w){ int u=1; for(int y=1;y<w;y++){ u=u*2; } return u; } int main(){ freopen("ball.in","r",stdin); freopen("ball.out","w",stdout); cin>>n; string st; cin>>st; int ji=0; int len=st.size() ; for(int i=0;i<len;i++){ if(st[i]=='B'){ sum+=ping(i+1); } } cout<<sum; }
Problem 1 双色球(ball.cpp/c/pas)
【题目描述】
机房来了新一届的学弟学妹,邪恶的chenzeyu97发现一位学弟与他同名,于是他当起了善良的学长233
“来来来,学弟,我考你道水题检验一下你的水平……”
一个栈内初始有n个红色和蓝色的小球,请你按照以下规则进行操作
- 只要栈顶的小球是红色的,将其取出,直到栈顶的球是蓝色
- 然后将栈顶的蓝球变成红色
- 最后放入若干个蓝球直到栈中的球数为n
以上3步骤为一次操作
如栈中都是红色球,则操作停止,请问几次操作后停止
chenzeyu97出完题发现他自己不能AC所以想请你帮忙
【输入格式】
第一行为一个整数n,表示栈的容量为n
第二行为一个字符串,第i个字符表示自顶向下的第i个球的颜色,R代表红色,B代表蓝色
【输出格式】
一个整数表示操作数
【样例输入】
样例1:
3
RBR
样例2:
4
RBBRRBBRRBBRRBBRRBBR
【样例输出】
样例1:2
样例2:6
【样例解释】
样例1:
样例2:
【数据范围】
50%的数据,1<=n<=20
100%的数据,1<=n<=50
需要数学处理
简单找规律