众所周知,拉手网有许多客户,由于客户数量实在过于庞大,因此拉手网希望为每位客户进行编号以便更好的为客户服务。每个编号为一个由‘0’~‘9’组成的N位数字。考虑到很多人不喜欢数字4和数字13,因此我们称包含4或包含13的编号为无爱编号,如134、84、121351都是无爱编号,123则不是无爱编号。现在我们希望知道,所有N位的编号中,刨除掉无爱编号后剩余的编号数量。这个编号数量可能很大,我们只要知道结果的最后8位即可。
输入的第一行是一个整数T,表示数据组数。
对于每组数据,输出一个8位整数表示编号数量的最后8位。若编号数量不足8位则用前导零填充。
2 1 2
00000009 00000080
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <vector> 6 #include <climits> 7 #include <algorithm> 8 #include <cmath> 9 #define LL long long 10 using namespace std; 11 const int md = 100000000; 12 int d[1000010] = {0,9,80}; 13 int main(){ 14 int i,kase,n; 15 for(i = 3; i < 1000010; i++){ 16 d[i] = ((LL)d[i-1]*9 - d[i-2] + md)%md; 17 } 18 scanf("%d",&kase); 19 while(kase--){ 20 scanf("%d",&n); 21 printf("%08d\n",d[n]); 22 } 23 return 0; 24 }
原文:http://www.cnblogs.com/crackpotisback/p/3831737.html