0
邓千陌
新手守护
新手守护
28分代码
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
#define MAXN 1005
typedef long long ll;
const ll mod = 1e9;
string str;
int n;
ll ans = 1;
// ll dfs(string, int = -1);
int main()
{
ios::sync_with_stdio(false);
cin >> str;
stack<int> s; //记录左括号位置
for (int i = 0; i < str.size(); i++)
{
ll cnt = 0, j = i;
if (str[i] == ')')
continue;
s.push(i);
while (!s.empty())
{
j++;
if (str[j] == ')')
s.pop(), cnt++;
else
s.push(j);
}
// cout << cnt << ' ' << ans << endl;
ans = (ans * cnt) % mod;
}
cout << ans % mod;
return 0;
}
// ll dfs(string s, int del_pos)
// {
// if (del_pos != -1)
// s.erase(s.begin() + del_pos);
// if (s.empty())
// return 1;
// s.erase(s.begin());
// // cout << s << ' ' << del_pos << endl;
// ll cnt = 1, temp_ans = 0;
// for (int i = 0; i < s.size() && cnt; i++)
// {
// if (s[i] == '(')
// cnt++;
// else
// cnt--, temp_ans = (temp_ans + dfs(s, i)) % mod;
// }
// // cout << s << " : " << temp_ans << endl;
// return temp_ans;
// }
/*
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
*/