题目链接
dp[i] 表示“iloveyou”这个字符串中第i个字母已经出现的“有效次数”;
代码
#include<iostream> #include<cmath> using namespace std; const ll mod = 20010905; ll dp[9]; int main(){ string s; cin >> s; memset(dp,0,sizeof(dp)); for (int i = 0; i < s.length(); ++i) { s[i] = tolower(s[i]); dp[8] = (dp[8] + (s[i] == 'u')*dp[7]) %mod; dp[7] = (dp[7] + (s[i] == 'o')*dp[6]) %mod; dp[6] = (dp[6] + (s[i] == 'y')*dp[5]) %mod; dp[5] = (dp[5] + (s[i] == 'e')*dp[4]) %mod; dp[4] = (dp[4] + (s[i] == 'v')*dp[3]) %mod; dp[3] = (dp[3] + (s[i] == 'o')*dp[2]) %mod; dp[2] = (dp[2] + (s[i] == 'l')*dp[1]) %mod; dp[1] = (dp[1] + (s[i] == 'i')) %mod; } cout << dp[8] << endl; return 0; }