noi 2.6_9272偶数个数字3(DP)

Posted konjac蒟蒻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了noi 2.6_9272偶数个数字3(DP)相关的知识,希望对你有一定的参考价值。

题意:问所有的N位数中,有多少个有偶数个数字3的数。

解法:f[i][j]表示i位数中含数字3的个数模2为j的个数。于是分第i位填3还是不填3讨论。

小tip:要模12345;for循环新定义了一个变量会慢一点点~

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #define N 1010
 4 #define mod 12345
 5 
 6 int f[2][2];
 7 int main()
 8 {
 9     int n;
10     scanf("%d",&n);
11     if (n==1) {printf("9\n");return 0;}
12     f[1][0]=8,f[1][1]=1;
13     int k=0;
14     for (int i=2;i<=n;i++)
15     {
16       f[k][0]=(f[1-k][0]*9+f[1-k][1])%mod;
17       f[k][1]=(f[1-k][1]*9+f[1-k][0])%mod;
18       k=1-k;
19     }
20     printf("%d\n",f[1-k][0]);
21     return 0;
22 }

 

以上是关于noi 2.6_9272偶数个数字3(DP)的主要内容,如果未能解决你的问题,请参考以下文章

NOI9272 偶数个三

noi 2.6_2988计算字符串距离(DP)

noi 2.6_1759最长上升子序列(DP+优化)

noi 2.6_6045开餐馆(DP)

noi 2.6_7624山区建小学(DP)

noi 2.6_9267核电站(DP)