http://www.bnuoj.com/bnuoj/problem_show.php?pid=4359
【题意】:输入N,表示几位数,0-这个N位数,有多少个满足条件的号码,不满足的情况为出现4,13的情况
【题解】:
写暴力代码找规律
1 9
2 80
3 711
4 6319
得出规律 a[i] = a[i-1]*9 - a[i-2]
另外注意处理减法出现负数的情况
【code】:
1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <algorithm> 5 6 #define MOD 100000000 7 #define N 1000000 8 using namespace std; 9 10 int arr[N+10]; 11 12 int main() 13 { 14 int i,j; 15 arr[0]=1; 16 arr[1]=9; 17 for(i=2;i<=N;i++) 18 { 19 arr[i]=(arr[i-1]*9-arr[i-2])%MOD; 20 arr[i]=(arr[i]+MOD)%MOD; //防止出现负数 21 } 22 int t; 23 scanf("%d",&t); 24 while(t--) 25 { 26 int n; 27 scanf("%d",&n); 28 printf("%08d ",arr[n]); 29 } 30 return 0; 31 }