NC21579. 牛牛学括号
描述
输入描述
输入一个字符串s只包含左右括号, 2 ≤ |s| ≤ 2500
输出描述
输出一个整数
示例1
输入:
()()()()()
输出:
1
示例2
输入:
(((())))
输出:
24
示例3
输入:
((()))(()(()))((()))
输出:
432
C++14(g++5.4) 解法, 执行用时: 7ms, 内存消耗: 504K, 提交时间: 2020-07-05 18:28:29
#include<bits/stdc++.h> using namespace std; #define LL long long LL m=1e9+7; int main() { string s; cin>>s; LL ans=1,num=0; int l=s.size(); for(int i=0;i<l;i++) { if(s[i]=='(')num++; if(s[i]==')')ans=(ans*num)%m,num--; } cout<<ans<<endl; }
C++(g++ 7.5.0) 解法, 执行用时: 4ms, 内存消耗: 512K, 提交时间: 2023-07-02 00:31:14
#include<bits/stdc++.h> using namespace std; int main() { long long number=0,ans=1; string s; cin >> s; for(int i=0;i<s.size();i++){ if(s[i]=='(') number++; else{ ans=ans*number%1000000007; number--; } } cout << ans; return 0; }
C++ 解法, 执行用时: 4ms, 内存消耗: 500K, 提交时间: 2021-08-08 20:46:24
#include<iostream> using namespace std; int main() { long long int n=0,i,max=1; string s; cin>>s; for(i=0;i<s.size();i++) { if(s[i]=='(') n++; else { max=max*n%1000000007; n--; } } cout<<max; return 0; }
Python3 解法, 执行用时: 44ms, 内存消耗: 4572K, 提交时间: 2022-11-07 17:33:23
bk=input() left=0 sum=1 for i in bk: if i=='(': left+=1 else: sum=(sum*left)%(1e9+7) left-=1 print(int(sum))