GatoBooster

Cuestionario 1 preg 4

Sep 6th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.20 KB | None | 0 0
  1. //gcc 5.4.0
  2.  
  3. #include  <stdio.h>
  4. #include  <string.h>
  5.  
  6. int main()
  7. {
  8.     int num;
  9.     int cont = 0;
  10.     int L, R;
  11.     int i = 0, j = 0, n = 0;
  12.     int vector[24];
  13.    
  14.     do{
  15.     scanf("%d",&num);
  16.     }while((num < 1) || (num > 24));
  17.        
  18.     do{    
  19.     scanf("%d",&L);
  20.     }while((L < 1) || (L > 100));      
  21.    
  22.     do{
  23.     scanf("%d",&R);
  24.     }while((R < L)||(R < 1) || (R > 100));
  25.    
  26.     for(i=0; i < num; i++){
  27.         scanf("%d",&vector[i]);
  28.     }
  29.      
  30.     int bits[24] = {};
  31.     int suma=0,bit = 0, copiaNumero = 0, cont1 = 0, aux=0;
  32.    
  33.     for(i=0; i < 24 ; i++){
  34.         bits[i] = 0;
  35.     }
  36.    
  37.     //Para que sea más rapido se omite si es menor a 2    
  38.     if(num > 2){
  39.    
  40.         for(n = 0; n < num; n++){              //Para obtener todas las combinaciones lo recorro hasta num
  41.             copiaNumero = n;                   //Usando el n para avanzar
  42.             bit = 23;
  43.      
  44.             while(copiaNumero != 0){           //Transformo el "n" en binario y lo guardo en el vector bits
  45.                 bits[bit] = copiaNumero%2;
  46.                 bit--;
  47.                 copiaNumero = copiaNumero/2;
  48.             }
  49.            
  50.             for(i = 0; i < 24; i++){           //Cambio el orden del los bits
  51.                 aux = bits[i];
  52.                 bits[i] = bits[23-i];
  53.                 bits[23-i] = aux;
  54.             }
  55.        
  56.             cont1 = 0;                         //Reseteo el cont1  
  57.             for(j = 0; j < num; j++){          //Este for es para que saber cuando hay un solo 1 ej n=4 bits=100
  58.                 if(bits[j] == 1){
  59.                     cont1++;
  60.                 }
  61.             }
  62.        
  63.             if(cont1 > 1){                     //Sabiendo que hay minimo 2 unos  
  64.                 suma = 0;                      //Reseteo suma
  65.                 for(i = 0 ; i < num; i++){     //recorro el vector y guardo el valor en suma
  66.                     suma = suma + (vector[i]*bits[i]);
  67.                 }
  68.                 if((suma >= L)&&(suma <= R)){  //Si se cumple la condición se aumentará el cont
  69.                     cont++;
  70.                 }
  71.             }
  72.         }  
  73.     }
  74.    
  75.     printf("%d", cont);
  76.    
  77.     return 0;
  78. }
Add Comment
Please, Sign In to add comment