Programação Competitiva

Azulejos [adaptada da OBI]

Dados N azulejos de dimensões 10cm x 10cm. Com eles, você deve montar um conjunto de quadrados de modo a utilizar TODOS os azulejos dados. Inicialmente você deve montar o maior quadrado possível com os azulejos dados; então, com os azulejos que sobraram, você deve montar o maior quadrado possível, e assim sucessivamente. Por exemplo, se forem dados 31 azulejos, o conjunto montado terá quatro quadrados, conforme ilustra a figura abaixo.

Elabore um algoritmo que leia a quantidade de azulejos e retorno quantos quadrados podem ser formados.

Entrada

A entrada consiste de um número inteiro N que indica a quantidade total de azulejos.

Saída

Seu programa deve imprimir apenas uma linha contendo um inteiro que indica a quantidade de quadrados que podem ser formadas.

Exemplos

Entrada

100

Saída

1

Entrada

50

Saída

2

Entrada

44

Saída

3

Código em Python

import math

n = int(input()) #lê a quantidade de azulejos
cont = 0         #armazena a quantidade de quadrados

while n > 0:
    x = int(math.sqrt(n))
    n = n - x*x #total de azulejos menos a quantidade
                #usada para fazer um quadrado
    cont = cont + 1
    
print cont

Experimente esse código em: http://www.codeskulptor.org/#user42_uWot6ZXUtI_0.py

 

Sair da versão mobile