Bootstrap

黑化、膨胀的牛牛——每日一练

黑化的牛牛
牛牛变得黑化了,想要摧毁掉地球。但他忘记了开启地球毁灭器的密码。牛牛手里有一个字符串S,牛牛还记得从S中去掉一个字符就恰好是正确的密码,请你帮牛牛求出他最多需要尝试多少次密码。
如样例所示S = "ABA",3个可能的密码是"BA", "AA", "AB".
当S = "A", 牛牛唯一可以尝试的密码是一个空的密码,所以输出1. 
输入描述:
输入包括一个字符串S,字符串长度length(1 ≤ length ≤ 50),其中都是从'A'到'Z'的大写字母。

输出描述:
输出一个整数,表示牛牛最多需要尝试的密码次数。

输入例子1:
ABA

输出例子1:
3

#include <iostream>
#include <set>

using namespace std;

string fun(string str,int n)
    {
    int length = str.size();
    string tmp;
    tmp = str;
    
    for(int i=n;i<length-1;i++)
        {
        tmp[i] = tmp[i+1];
    }
    tmp[length-1] = '\0';
    
    return tmp;
}
int main()
    {
    string str;
    //cin >> str;
    
    while(cin >> str)
        {
        set<string> res;
        int count = 0;
        int length = str.size();
        
        if(length == 1)
            {
            cout << 1 << endl;
        }
        else{
            for(int i=0;i < length;i++){
                string temp;
                temp = fun(str,i);
                res.insert(temp);
            }
            count = res.size();
            cout << count << endl;
        }
}
    return 0;

}


膨胀的牛牛
牛牛以草料为食。牛牛有一天依次遇到n堆被施展了魔法的草料,牛牛只要遇到一堆跟他当前相同大小的草料,它就会把草料吃完,而使自己的大小膨胀一倍。一开始牛牛的大小的是A,然后给出牛牛依次遇到的n堆草料的大小。请计算牛牛最后的大小。 
输入描述:
输入包括两行,第一行包含两个整数n和A(1 ≤ n ≤ 200, 1 ≤ A ≤ 1,000,000,000)
第二行包括n个整数,表示牛牛依次遇到的草料堆大小a_i(1 ≤ a_i ≤ 1,000,000,000)

输出描述:
输出一个整数,表示牛牛最后的大小。

输入例子1:
5 1
2 1 3 1 2

输出例子1:
4

#include <iostream>

using namespace std;

int main()
    {
    int A,n;
    
    while(cin >> n >> A)
        {
        int a[n];
        for(int i=0;i < n;i++)
            {
            cin >> a[i];
        }
        
        for(int i=0;i < n;i++)
            {
            if(a[i] == A)
                {
                A = A+a[i];
            }
        }
        cout << A << endl;
    }
        
    return 0;
}

;