Como Greg Martin puntos fuera, usted no puede hacer esto, si $a$ $b$ son ambos divisibles por $p$. Así que asumir que al menos uno de ellos, decir $a$, no es divisible por $p$. En ese caso, usted puede seleccionar $d$ cualquier forma que desee (IOW el sistema es indeterminado). He aquí cómo:
1) de (Pre)calcular el inverso modular de $a$. Este es un entero con la propiedad $aa'\equiv1\pmod p$. Se puede encontrar una única ejecución de un algoritmo de Euclides extendido. Si el mismo $a,p$ son usados muchas veces, entonces es evidente que se puede almacenar el resultado para su futura reutilización.
2) Calcular el entero $c=a'(1+bd) \pmod p$, y lean el contenido. Aquí es la razón por la que funciona
$$
a\cdot c=a\cdot a'(1+bd)\equiv 1+bd\pmod p,
$$
debido a $a\cdot a'\equiv 1\pmod p$. Que la congruencia es claramente equivalente a la deseada congruencia (mover el plazo $bd$ para el otro lado y de intercambio de su signo).
===============================
IOW, si $(a,p)=1$ (o $(b,p)=1$), entonces, lo que tienes es esencialmente una sola ecuación lineal en dos variables con los parámetros que van por el campo $\mathbf{Z}_p.$ Bajo tales circunstancias, puede elegir una de las incógnitas de manera arbitraria y resolver para el otro. No será exactamente $p$ pares no congruentes soluciones.