quinta-feira, 25 de outubro de 2018

URI PROBLEMA 1709 - Baralho Embaralhado SOLUÇÃO EM C

URI Online Judge | 1709

Baralho Embaralhado

Por Vinícius "Cabessa" Fernandes dos Santos BR Brazil
Timelimit: 1
Um baralho contém um número par 2n de cartas a1, a2,..., a2n, todas distintas (a1 < a2 ... < a2n). O baralho encontra-se perfeitamente ordenado, ou seja, a primeira carta é a1, a segunda carta é a2, e assim por diante, até a última carta, que é a2n.
Um croupier então executa repetidamente um procedimento de embaralhar, que consiste de dois passos:
  1. O baralho é divido ao meio;
  2. As cartas das duas metades são então intercaladas, de maneira que se a sequência de cartas do baralho no início do passo 1 é x1, x2, ..., x2n, então ao final do passo 2 a sequência de cartas se torna xn+1, x1, xn+2, x2,..., x2n, xn.
Dado o número de cartas do baralho, escreva um programa que determine quantas vezes o procedimento de embaralhar descrito acima deve ser re petido de forma que o baralho volte a ficar ordenado.

Entrada

A única linha da entrada contém um inteiro par P (2 ≤ P ≤ 2 x 105 ), indicando o número de cartas do baralho (note que o valor P corresponde ao valor 2n na descrição acima).

Saída

Seu programa deve produzir uma única linha contendo um único inteiro, o número mínimo de vezes que o processo de embaralhamento deve ser repetido para que o baralho fique novamente ordenado.



#include <stdio.h>

int main()
{
    int P, a, b;

    while(scanf("%d", &P) != EOF){
        a = 2;
        b = 1;

        while(a != 1){
            if(a <= P/2){
                a += a;
            }
            else{
                a -= (P - a + 1);
            }
            b++;
        }
        printf("%d\n", b);
    }

    return 0;
}

Nenhum comentário:

Postar um comentário

URI PROBLEMA 1133 - Resto da Divisão SOLUÇÃO EM C

URI Online Judge | 1133 Resto da Divisão Adaptado por Neilor Tonin, URI   Brasil Timelimit: 1 Escreva um programa que leia 2 valo...