解:首先看这个纯循环到底是什么玩意.....
经过一番打表,发现纯循环小数就是分母与进制互质的既约分数。
1 #include <bits/stdc++.h> 2 3 std::bitset<1001> vis; 4 5 inline bool check(int x, int y) { /// x / y 6 //printf("x = %d y = %d \n", x, y); 7 vis.reset(); 8 int rest = x % y; 9 if(!rest) return true; 10 int op = rest; 11 vis[op] = 1; 12 //printf("op = %d \n", op); 13 while(true) { 14 rest *= 10; 15 int r = rest % y; 16 //printf("r = %d \n", r); 17 if(vis[r]) { 18 //printf("return %d = %d \n", r, op); 19 return r == op; 20 } 21 vis[r] = 1; 22 rest = r; 23 } 24 return false; 25 } 26 27 int gcd(int a, int b) { 28 if(!b) return a; 29 return gcd(b, a % b); 30 } 31 32 int main() { 33 34 int n; 35 scanf("%d", &n); 36 37 for(int i = 0; i <= n; i++) { 38 for(int j = 1; j <= n; j++) { 39 if(gcd(i, j) == 1) printf("%d ", (int)check(i, j)); 40 else printf(" "); 41 } 42 puts(""); 43 } 44 45 return 0; 46 }