http://lj.rossia.org/users/neklyueva/68
#include <stdio.h> #include <malloc.h> #include <string.h> unsigned int N = 1; unsigned int t = 0; unsigned int b = 3; /* основание */ unsigned int i; char* str; const char digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; /* a^n */ unsigned int upow(unsigned int a, unsigned int n) { unsigned int i, r = 1; for (i = 0; i < n; i++) r *= a; return r; } /* buf - куда поместить строку, N - число разрядов, base - основание системы, u - исходное число */ void uint2str(char* buf, unsigned int N, unsigned int base, unsigned int u) { unsigned int i; for (i = 1; i <= N; i++) { buf[N-i] = digits[u % base]; u /= base; } } int main(int argc, char **argv) { if (argc > 1) sscanf(argv[argc - 1], "%u", &N); str = malloc(sizeof(char)*(N + 1)); str[N + 1] = '\0'; for (i = 0; i < upow(b, N); i++) { uint2str(str, N, b, i); if (!strstr(str, "22")) { printf("%s = %u\n", str, i); t++; } } free(str); printf("N = %u, t = %u\n", N, t); return 0; }
0000 = 0 0001 = 1 0010 = 2 0100 = 4 0101 = 5 1000 = 8 1001 = 9 1010 = 10 N = 4, t = 8
|
... 10101010000100000101 = 696581, 2520405, AA105 10101010000100001000 = 696584, 2520410, AA108 10101010000100001001 = 696585, 2520411, AA109 10101010000100001010 = 696586, 2520412, AA10A 10101010000100010000 = 696592, 2520420, AA110 10101010000100010001 = 696593, 2520421, AA111 10101010000100010010 = 696594, 2520422, AA112 10101010000100010100 = 696596, 2520424, AA114 10101010000100010101 = 696597, 2520425, AA115 10101010000100100000 = 696608, 2520440, AA120 10101010000100100001 = 696609, 2520441, AA121 10101010000100100010 = 696610, 2520442, AA122 10101010000100100100 = 696612, 2520444, AA124 10101010000100100101 = 696613, 2520445, AA125
|
|
|
|
|
Числа без 11: Числа без 22: N = 1, t = 3 N = 1, t = 3 N = 2, t = 8 N = 2, t = 8 N = 3, t = 22 N = 3, t = 22 N = 4, t = 60 N = 4, t = 60 N = 5, t = 164 N = 5, t = 164 N = 6, t = 448 N = 6, t = 448 N = 7, t = 1224 N = 7, t = 1224 N = 8, t = 3344 N = 8, t = 3344 N = 9, t = 9136 N = 9, t = 9136 Числа без 11, 22: N = 1, t = 3 N = 2, t = 7 N = 3, t = 17 N = 4, t = 41 N = 5, t = 99 N = 6, t = 239 N = 7, t = 577 N = 8, t = 1393 N = 9, t = 3363 Числа без 11, 22, 12, 21: N = 1, t = 3 N = 2, t = 5 N = 3, t = 11 N = 4, t = 21 N = 5, t = 43 N = 6, t = 85 N = 7, t = 171 N = 8, t = 341 N = 9, t = 683