解析:
由于要按照2019这个顺序递推,所以设‘2’=a ‘0’=b ‘1’=c ‘9’=d
递推的方程式
a=(a+1)%MOD
b=(b+a)%MOD
c=(c+b)%MOD
d=(d+c)%MOD
这样就可以保证顺序的问题不会出错
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=1e9+7;
ll a,b,c,d;
char s[1000005];
int main()
{
while(~scanf("%s",s))
{
int n=strlen(s);
a=b=c=d=0;
for(int i=0;i<n;i++)
{
if(s[i]=='2') a=(a+1)%MOD;
else if(s[i]=='0') b=(b+a)%MOD;
else if(s[i]=='1') c=(c+b)%MOD;
else if(s[i]=='9') d=(d+c)%MOD;
}
printf("%lld\n",d%MOD);
}
return 0;
}