NC215080. CCSU
描述
输入描述
第1行输入一个字符串s。
输出描述
输出子序列为"CCSU"的个数 答案模上。
示例1
输入:
CCSCSUU
输出:
8
说明:
Java(javac 1.8) 解法, 执行用时: 121ms, 内存消耗: 17272K, 提交时间: 2020-12-25 20:39:19
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String zifu = in.next(); long a[] = new long[4]; for(int i =0;i<zifu.length();i++) { if(zifu.charAt(i) == 'C') { a[1] += a[0]; a[0]++; } else if (zifu.charAt(i) == 'S') { a[2] += a[1]; } else if (zifu.charAt(i) == 'U') { a[3] +=a[2]; } } a[0] %= 1000000007; a[1] %= 1000000007; a[2] %= 1000000007; a[3] %= 1000000007; System.out.println(a[3]); in.close(); } }
C++(clang++11) 解法, 执行用时: 7ms, 内存消耗: 516K, 提交时间: 2020-12-20 16:56:00
#include <bits/stdc++.h> using namespace std; int main() {string s;long long c,u,num; cin >> s; c = u = num = 0; for( int i = 0 ; i<s.length() ; i++ ) { if( s[i]=='U' ) u++; } for( int i = 0 ; i<s.length() ; i++ ) {if( s[i]=='C' ) c++; else if( s[i]=='U' ) u--; else if( s[i]=='S' ) { num+=c*(c-1)/2*u; } } cout << num%1000000007 ; }