不需要输入输出时可以用__int128扩大范围
简单 DP
solution:
当遇到字符 2 的时候字符串 2 的数量 +1,字符串 202 的数量加上字符串 20 的数量。
当遇到字符 0 的时候字符串 20 的数量加上字符串 2 的数量。
当遇到字符 3 的时候字符串 2023 的数量加上字符串 202 的数量。
最后,字符串 2023 的数量就是答案。
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int dp[4]={0};//分别代表"2"、"20"、"202"、"2023"的数量
string s;
for(int i=1;i<=2023;i++){//构造string
s+=to_string(i);
}
for(int i=0;i<s.size();i++){//构造string
if(s[i]=='2'){
dp[0]++;
dp[2]+=dp[1];
}else if(s[i]=='0'){
dp[1]+=dp[0];
}else if(s[i]=='3'){
dp[3]+=dp[2];
}
}
cout<<dp[3]<<endl;
}