首页 > 代码库 > 【HDOJ】4278 Faulty Odomete

【HDOJ】4278 Faulty Odomete

水题。

 1 /* 4278 */ 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5  6 #define MAXN 10 7  8 int a[MAXN][MAXN]; 9 10 void init() {11     int i, j, k;12     13     a[0][0] = a[0][1] = a[0][2] = 0;14     a[0][3] = a[0][4] = a[0][5] = a[0][6] = a[0][7] = 1;15     a[0][8] = a[0][9] = 2;16     17     for (i=1,k=10; i<MAXN; ++i,k*=10) {18         a[i][0] = a[i-1][9];19         for (j=1; j<MAXN; ++j) {20             if (j == 3 || j==8) {21                 a[i][j] = a[i][j-1] + k;22             } else {23                 a[i][j] = a[i][j-1] + a[i][0];24             }25         }26     }27 }28 29 int main() {30     int n, m;31     int i, j, k;32     int ans;33     34     #ifndef ONLINE_JUDGE35         freopen("data.in", "r", stdin);36         freopen("data.out", "w", stdout);37     #endif38     39     init();40     while (scanf("%d", &n)!=EOF && n) {41         ans = m = n;42         i = 0;43         while (n) {44             k = n%10;45             if (k)46                 ans -= a[i][k-1];47             n /= 10;48             ++i;49         }50         printf("%d: %d\n", m, ans);51     }52     53     return 0;54 }

 

【HDOJ】4278 Faulty Odomete