1313:【例3.5】位数问题
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 25731 通过数: 14117
【题目描述】
在所有的N位数中,有多少个数中有偶数个数字3?由于结果可能很大,你只需要输出这个答案对12345取余的值。
【输入】
读入一个数N(N≤1000)。
【输出】
输出有多少个数中有偶数个数字3。
【输入样例】
2
【输出样例】
73
#include<bits/stdc++.h> using namespace std; int o[10005],j[10005]; //在一位数中,从0到9这10个数中,有9个偶数的3(没有3),一个奇数的3 int main() { int i,tmp=9,k;//9是一个常数,是奇偶转换时用到的,一个是9,一个是1 o[1]=9;//一位时,有9个偶数的3 j[1]=1;//一位时,有1个奇数的3 scanf("%d",&k); for(i=2;i<=k;i++)//从第二位开始计算 { if(i==k)//如果是最高位时,不能为0,tmp减1; --tmp; o[i]=(o[i-1]*tmp+j[i-1])%12345;//没3的有9个,分别和(o【i-1】组合,还是没3;有3的一个和j【i-1】组合,也是个偶数3 j[i]=(j[i-1]*tmp+o[i-1])%12345; //奇数的3,分别和没3的9个数组合,成为奇3;偶3的只和一个3组合,成为奇3 } printf("%d",o[k]); return 0; }