首页 > 代码库 > 【noi 2.6_9272】偶数个数字3(DP)

【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)