(Lenguaje C) Un trozo de material con una longitud de 133 m debe cortarse en materiales cortos con una longitud de 19 m y 23 m. Descubra cuánto material queda cuando los dos materiales cortos se cortan en varias longitudes.
Hola cartel, si entendí bien tu pregunta, la primera pregunta es saber ¿cuántos trozos de material corto se cortan en cada uno, para que el material restante sea el mínimo?
Entonces el código es el siguiente:
#include lt;stdio.hgt;
int main()
{ p>
int a = 133; //La longitud total es de 133 metros
int x, y //Indica que 19m tiene una sección en x y 23 metros tiene una sección en y
int z[100] ; //Se utiliza para almacenar la longitud restante z de cada ciclo
z[0]=133 //Inicializa la matriz z
int i; =1;
//Indica que cuando x es x_min, y es y_min yz es z_min, la longitud restante z es la más pequeña
int x_min = 0;
int y_min = 0;
int z_min = 0;
for(x=0; xlt; =7; x )
{ p>
for(y=0; ylt; =5; y )
{
z[i]=133-x*19-y*23; p>
if( z[i]gt; =0 amp; amp; z[i]lt; z[i-1])
{
x_min = x
y_min = y;
z_min = z[i]
}
i=i 1;
}
}
printf("d d d \n", x_min, y_min, z_min
return
}
El resultado final es x =5 y=1 z=15
Es decir, quedan al menos 15 metros
Segunda pregunta:
Análisis de la segunda pregunta
La prioridad del desplazamiento bit a izquierda lt;lt; es mayor que el bit a bit OR|
Entonces ylt;lt;2 se opera primero
El binario de 3 es 00000011, y el desplazamiento a la izquierda de 2 bits es 00001100 Usa decimal para representar 12
Luego calcula 2|12
2 usa 8 bits para representar 00000010
12 usa 8 bits para representar 00001100
OR bit a bit significa hacer OR en cada bit correspondiente 0|0=0 1|0=1 0|1=1 1|1= 1
Entonces la respuesta es 00001110 usando notación decimal para representar el bit 14 p>