blue and red ball

#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个红色和蓝色的小球,请你按照以下规则进行操作

  1. 只要栈顶的小球是红色的,将其取出,直到栈顶的球是蓝色
  2. 然后将栈顶的蓝球变成红色
  3. 最后放入若干个蓝球直到栈中的球数为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

需要数学处理

简单找规律

原文地址:https://www.cnblogs.com/nengshen/p/5990424.html