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
{ p >
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 } p> else?if(IsCircle(n-i )==1) { printf("d\n",n-i); romper; } p> 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