1313:【例3.5】位数问题
【题目描述】
在所有的N位数中,有多少个数中有偶数个数字3?由于结果可能很大,你只需要输出这个答案对12345取余的值。
【输入】
读入一个数N。
【输出】
输出有多少个数中有偶数个数字3。
【输入样例】
2
【输出样例】
73
样例:是72个0个3(如21),1个偶数3(33)
我们看一个当n=3时怎样的。
选择百位:偶数个3:8(没有0和3) 奇数个3:1
选择十位:偶数个3:8*9+1(33) 奇数个3:1*9+8*1;(百位为3十位为非3方案数+百位非0非3十位为3方案数)
选择个位:偶数个3:略。
#include<iostream> #include<cstdio> using namespace std; const int mod = 12345; int num[1010][2]; int main() { int n; num[1][0] = 9; num[1][1] = 1; scanf("%d", &n); int x = num[1][0]; for (int i = 2; i <= n; ++i) { if (i == n)--x; num[i][0] = (num[i - 1][0] * x + num[i - 1][1]) % mod; num[i][1] = (num[i - 1][1] * x + num[i - 1][0]) % mod; } printf("%d\n", num[n][0]); }