Cómo calcular la suma de los valores que ocurren solo en uno de los conjuntos

Primero, considere el siguiente subproblema: dado un subconjunto [matemático] S \ subseteq \ {1, 2, 3, 4, 5, 6, 7, 8, 9 \} [/ matemático], ¿cuántos enteros positivos hay en el rango [matemática] 1, \ ldots, N [/ matemática] cuyo conjunto de dígitos es exactamente igual a ese conjunto, ¿excepto que también puede contener cualquier número de ceros? (Llame a este número [matemáticas] f (S, N) [/ matemáticas]).

Para resolver este subproblema, usaría la técnica de descomposición de rango decimal. Por ejemplo, si ponemos N = 641, dividiríamos ese rango en los intervalos elementales [1, 9], [10, 19], [20, 29], [30, 39], [40, 49] , [50, 59], [60, 69], [70, 79], [80, 89], [90, 99], [100, 199], [200, 299], [300, 399], [ 400, 499], [500, 599], [600, 609], [610, 619], [620, 629], [630, 639], [640, 640], [641, 641] y suman resultado para cada intervalo elemental. El número de tales subranges es [math] O (\ log N) [/ math], por lo que esto se puede hacer de manera eficiente incluso cuando [math] N = 10 ^ {100} [/ math]. Obtener el resultado para cada uno de estos intervalos elementales es una cuestión de simple combinatoria. Hay 512 subconjuntos diferentes de [matemáticas] \ {1, 2, 3, 4, 5, 6, 7, 8, 9 \} [/ matemáticas] por lo que para un N dado, podemos usar esta técnica para calcular previamente [matemáticas] f (S, N) [/ math] para todos [math] S [/ math] sin usar demasiado tiempo.

Una vez que tenga estos valores [matemáticos] f (S, N) [/ matemáticos] en la mano, puede abordar el problema principal fácilmente. Deje que [math] S_1 [/ math] y [math] S_2 [/ math] se extiendan sobre todos los subconjuntos posibles de [math] \ {1, 2, 3, 4, 5, 6, 7, 8, 9 \} [/ matemáticas]; Hay 262.144 posibilidades diferentes. [math] S_1 [/ math] es el conjunto de dígitos para [math] A [/ math], y [math] S_2 [/ math] es el conjunto de dígitos para [math] B [/ math]. Cuente el número de pares [matemática] (A, B) [/ matemática] que respectivamente tienen conjuntos de dígitos de [matemática] S_1 [/ matemática] y [matemática] S_2 [/ matemática]; esto es simplemente [matemáticas] f (S_1, N) \ veces f (S_2, N) [/ matemáticas]. Multiplique eso por el valor [matemático] R [/ matemático], es decir, [matemático] \ sum S_1 \ oplus S_2 [/ matemático]. Suma eso sobre todos los pares [math] (S_1, S_2) [/ math], y eso es todo.

Claramente estos son problemas de práctica. Es mejor que los descubras por ti mismo. Son operaciones de set extremadamente básicas.

El quid es: necesita calcular la “diferencia simétrica” ​​entre los dos conjuntos, el operador de python para eso es el intercalado ( ^ ). Ahora trata con el repetitivo.