Red de conocimiento informático - Conocimiento del nombre de dominio - Número de círculo (círculo) Programación en lenguaje C

Número de círculo (círculo) Programación en lenguaje C

#include?lt;stdio.hgt;

int?IsCircle(int?n)//Determinar si n es un número de ciclo

{

int?cir[6], cirtemp[6]; //La entrada máxima en esta pregunta es 6 dígitos

int?i=0, j, k=0, count=0 ;

while(ngt; 0)//Coloca cada dígito de n en el número circtemp a la vez (orden inverso)

{

count;? // Cuenta

cirtemp[i]=n10;

n=n/10;

}

for(i=0 ; ilt ; count; i )//Restaurar el orden (también puedes usar el orden inverso directamente, pero será más fácil de entender si lo restauras y miras el siguiente código)

cir[i ]=cirtemp[count-i-1 ];

for(i=0; ilt; count; i)//¿Cuántas veces se necesitan para repetir el número total?

{

j=cir[k];?//¿J avanza hacia la derecha?

k=(k j)count;//Subíndice después de completar

}

if(k==0)//Después del bucle, simplemente regresa al primer número. Este número es el número del bucle

return?1;

else

return?0;

}

int?main()

{

int?n, i=0 ;

printf("Ingrese un número (9

scanf("d ", amp; n);

mientras(1)

{

if(IsCircle(n i )==1)

{

printf("d\n", n i

romper

}

else?if(IsCircle(n-i )==1)

{

printf("d\n",n-i);

romper;

}

i ;

}

regresar?0;

}

Estrictamente hablando, mi programa aún no es riguroso. En IsCircle, es más preciso juzgar si k ha atravesado 0, 1, 2,... cuente estos números naturales para juzgar si es un número cíclico. , puede haber una coincidencia que hace que el bucle regrese al primer número (subíndice k=0) Pero hay un número en el medio que no se usa como punto inicial y punto final (simplemente creo que es posible, y hay que demostrar si es posible).

De hecho, no es difícil sumar cada valor de k if = 1 2 3... count, y finalmente k = 0.

Además, al ingresar, es mejor comprobar si la entrada está estandarizada 9<Número<999589