问题 E: 【例3.5】位数问题
时间限制: 1 Sec 内存限制:128 MB题目描述
在所有的N位数中,有多少个数中有偶数个数字3?由于结果可能很大,你只需要输出这个答案对12345取余的值。
输入
读入一个数N。
输出
输出有多少个数中有偶数个数字3。
样例输入
2
样例输出
73
提示
O(n)为n位数中偶数个3的个数
J(n)为n位数中奇数个3的个数
①末位为3
O(n)=J(n-1)
J(n)=O(n-1)
②末位非3
O(n)=O(n-1)*9
J(n)=J(n-1)*9
∴O(n)=O(n-1)*9+O(n-1)
J(n)=J(n-1)*9+E(n-1)
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int e[100000],o[100000];
e[1]=8;
o[1]=1;
for(int i=2;i<=n;i++)
{
e[i]=(e[i-1]*9+o[i-1])%12345;
o[i]=(o[i-1]*9+e[i-1])%12345;
}
cout<<e[n]<<endl;
return 0;
}