法一:动态规划
#include<iostream>
#include<string>
using namespace std;
typedef long long LL;
//这道题必须看long long不然会爆
LL dp[4];
string s;
int main()
{
for(int i=1;i<=2023;i++)
s+=to_string(i);
LL len=s.size();
for(LL i=0;i<len;i++)
{ if(s[i]=='2')
{
dp[0]++;遇到2,以2结尾的个数加1
dp[2]+=dp[1];以202结尾的加以20结尾的个数
}
if(s[i]=='0')
{
dp[1]+=dp[0];遇到0,以20结尾的个数加上以2结尾的个数
}
if(s[i]=='3')
{
dp[3]+=dp[2];遇到3,以2023结尾的个数加上以202结尾的个数
}
}
cout<<dp[3]<<endl;
return 0;
}