se me ocurre..
int numero; //el valor a procesar
int busqueda; //el valor a buscar sin 0s a la izquierda
int tamano; //10 elevado a el largo de el valor buscado incluyendo 0 a la izquierda
primero generas numeros... preferiblemente primos para resolver ese problema de antemano
y "tamano" será igual a 1 seguido de tantos ceros como numeros tenga el valor a buscar
ej el valor a buscar es "023" entonce "tamano" es "1000", si es 8, "tamano" es "10"
si restas la busqueda al numero el resultado debe contener ceros en el espacio esperado... entonces el modulo debe ser 0... si eso no sucede quiere decir que el ultimo valor no coincide, asi que movemos el numero original una coma a la izquierda
supongamos que el numero es
87240065948 y buscamos 0065... entonces busqueda = 65 y tamano = 10
487240065948 - 65 = 87240065883
87240065883 mod 10^4 = 5883
5883 != 0
si dividimos este numero varias veces entre 10 en un ciclo nos queda eventualmente
87240065 - 65 = 87240000
87240065 mod 10^4 = 0
0 == 0
y bueno... si 0=0 quiere decir que el numero si es...