【杭电acm】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 }

【杭电acm】1061 Rightmost Digit,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。