【题目描述】
在所有的N位数中,有多少个数中有偶数个数字3?由于结果可能很大,你只需要输出这个答案对12345取余的值。
【输入】
读入一个数N(N≤1000)。
【输出】
输出有多少个数中有偶数个数字3。
【输入样例】
2
【输出样例】
73
【题解代码】
#include<bits/stdc++.h>
using namespace std;/* 1位数时 2位数时 3位数时
奇数个3的个数 odd[1]=1 odd[2]=9*odd[1]+1*even[1] odd[2]=9*odd[1]+1*even[1]
偶数个3的个数 even[1]=9 even[2]=1*odd[1]+9*even[1] even[2]=1*odd[1]+9*even[1]
*//*
边界条件:odd[1]=1 even[1]=9递推关系式:odd[i] = 9 * odd[i - 1] + 1 * even[i - 1];even[i] = 1 * odd[i - 1] + 9 * even[i - 1];注意:最高位不能为0(即i=n时)
*/const int N = 1e3 + 10;
int odd[N], even[N];int main()
{int n; cin >> n;odd[1] = 1, even[1] = 9;for (int i = 2; i <= n; i++){if (i == n) //最高位不能为0{odd[i] = (8 * odd[i - 1] + 1 * even[i - 1]) % 12345;even[i] = (1 * odd[i - 1] + 8 * even[i - 1]) % 12345;}else{odd[i] = (9 * odd[i - 1] + 1 * even[i - 1]) % 12345;even[i] = (1 * odd[i - 1] + 9 * even[i - 1]) % 12345;}}cout << even[n];return 0;
}