99. 查数
★ 输入文件:chashu.in
输出文件:
chashu.out
简单对比
时间限制:1 s 内存限制:128 MB
【问题描述】
在所有的N位数中,有多少个数中有偶数个数字3?
在所有的N位数中,有多少个数中有偶数个数字3?
【输入格式】
文件只有一行为一个正整数n
文件只有一行为一个正整数n
【输出格式】
输出文件只有一个整数,方案数(由于结果可能很大,你只需要输出这个答案mod 12345的值。)。
输出文件只有一个整数,方案数(由于结果可能很大,你只需要输出这个答案mod 12345的值。)。
【输入输出样例】
输入:
chashu.in
2
输入:
chashu.in
2
输出:
chashu.out
73
chashu.out
73
数据规模:1<=N<=1000
简单 递推。。对于这类题可以先写个暴力程序,看能否找出规律,顺便能得出部分数据。。
#include<cstdio>
#include<cmath>
using namespace std;
int dp[1024][2]; //0记录奇数个3的个数,1记录偶数个3的个数
int main(){
freopen("chashu.in","r",stdin);
freopen("chashu.out","w",stdout);
int n;
dp[1][0]=1; dp[1][1]=8;
dp[2][0]=17; dp[2][1]=73;
for(int i=3;i<=1000;i++){
dp[i][1]=(dp[i-1][1]*9+dp[i-1][0])%12345;
dp[i][0]=(dp[i-1][1]+dp[i-1][0]*9)%12345;
}
scanf("%d",&n);
printf("%d\n",dp[n][1]);
return 0;
}
//int is(int n){
// int cnt=0;
//
// while(n>0){
// int ret = n%10;
// if(ret==3) cnt++;
// n/=10;
// }
// if(cnt%2==0) return 1;
// return 0;
}
//int main(){
// int n;
// // scanf("%d",&n);
// int ans;
// for(int i=1;i<=7;i++){
// int last=ans;
// ans=0;
// for(int j=pow(10,i-1);j<pow(10,i);j++){
// ans+=is(j);
// }
// printf("%d %d \n",ans-last*9,ans);
// }
// return 0;
//
//}