#include #include #include #include using namespace std; char parse(string s, int& res) { if( !isdigit(s[0]) ) { // 先頭が数字でない(アルファベットか空文字列)場合 int i; for( i = 0 ; isalpha(s[i]) ; ++i ) ; // 文字数を数えて if( res < i ) return s[res]; // その範囲内なら文字を返す res -= i; return '0'; // 指定の範囲内で見つからない場合 } else { // 先頭が数字(つまりループ)の場合 int loop = atoi(s.c_str()); // ループ回数 int i; for( i = 0 ; isdigit(s[i]) ; ++i ) ; if( isalpha(s[i]) ) { // 数字の後に括弧が無い場合 if( loop > res ) return s[i]; // ループ回数の方が多ければ文字を返す res -= loop; s = s.substr(i + 1, s.length() - i - 1); // ループする文字を除く } else { // ループの括弧がある場合 int j, level; for( ++i, j = 0, level = 1 ; level ; ++j ) { if( s[i + j] == '(' ) ++level; if( s[i + j] == ')' ) --level; } // 対応する返し括弧を探す string str = s.substr(i, j - 1); // ループする文字列をゲット for( ; loop ; --loop ) { // ループする。 char ret = parse(str, res); if( ret != '0' ) return ret; } s = s.substr(i + j, s.length() - i - j); // ループ文字列を除く } } return parse(s, res); // 残った文字列をパージング } int main(void) { string s; int i; while( cin >> s >> i ) { if( s == "0" && i == 0 ) break; cout << parse(s, i) << '\n'; } return 0; }