题目描述
传送门
答案对12345取模!
题解
非常简单的dp。
f(i,0/1)表示前i位有偶数/奇数个3的数字个数。
f(i,0)=f(i-1,1)+f(i-1,0)*9;f(i,1)=f(i-1,0)+f(i-1,1)*9;
代码
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define Mod 12345
int n,f[2][2];
int main()
{
scanf("%d",&n);
f[1][1]=1,f[1][0]=8;
for (int i=2;i<=n;++i)
{
f[i&1][0]=(f[(i-1)&1][1]+f[(i-1)&1][0]*9%Mod)%Mod;
f[i&1][1]=(f[(i-1)&1][0]+f[(i-1)&1][1]*9%Mod)%Mod;
}
printf("%d\n",f[n&1][0]);
}