【HDOJ】1061 Rightmost Digit

这道题目可以手工打表,也可以机器打表,千万不能暴力解,会TLE。

 1 #include <stdio.h>
 2 
 3 #define MAXNUM 1000000001
 4 
 5 int buf[10][10];
 6 
 7 int main() {
 8     int case_n, n;
 9     int i, j;
10 
11     for (i=0; i<10; ++i) {
12         buf[i][0] = 1;
13         buf[i][1] = i;
14         for (j=2; j<10; ++j) {
15             buf[i][j] = buf[i][j-1]*i%10;
16             if (buf[i][j] == buf[i][1])
17                 break;
18             buf[i][0]++;
19         }
20     }
21     /*
22     for (i=0; i<10; ++i) {
23         printf("%d:", i);
24         for (j=1; j<=buf[i][0]; ++j)
25             printf(" %d", buf[i][j]);
26         printf("\n");
27     }
28     */
29     scanf("%d", &case_n);
30 
31     while (case_n--) {
32       scanf("%d", &n);
33       i = n % 10;
34       j = n % buf[i][0];
35       if (!j)
36           j = buf[i][0];
37       printf("%d\n", buf[i][j]);
38     }
39 
40     return 0;
41 }

 

 

posted on 2014-03-31 17:37  Bombe  阅读(137)  评论(0编辑  收藏  举报

导航