TOPIC

Alguém pode me ajudar??

Lucas Pereira asked 2 years ago

#include<math.h>
#include<stdio.h>
main()
{
    int  exp, log;
     long int num;
   while(scanf("%lu", &num)!=EOF )
   {
     log = pow(2,(int)(log10(num)/log10(2)));
     if(num==1) printf("0\n");
     else  if(log!=num)continue;
     else{
            log = log10(num)/log10(2);
            printf("%lu\n", log);       
         }

   }

}

Remember not post solutions. Your post may be reviewed by our moderators.

  • Ícaro Santos Pereira replied 5 months ago

    Este é um problema que pode ser resolvido, com Logaritmo na base 2.

    Ou seja, dado um n, saiba o valor de Log{2}(n)

  • Eliel Cesar da Silva Lima replied 1 year ago

    Esse é um problema de progressão, não se engane apenas com a descrição achando que fazer divisão por 2 ou resto da divisão por 2 vai resolver, vai almentando a quantidade de clones que quando passar de 4 clones vc vai notar que a questão é uma pegadinha.

  • Lucas Pereira replied 2 years ago

    I thought i should let the program show only outputs of 2^n, for exemple if the input was 5 it wouldnt show anything but i have already solved it. It was just a misunderstanding by the way thank you.

  • feodorv replied 2 years ago

    Any even number has zero last bit, or we can write it as

    if( num % 2 == 0 )

    Why use log10, log2, pow? These functions operate double values and consequently give approximate result. You loose the precision in your code and as a result get WA.