Para efeitos da nota atribuida à resolução de exercícios ao longo do semestre - Submeter até 23:59 de 6 de Novembro
(o problema continuará depois disponível para submissão, mas sem contar para a nota)
[para perceber o contexto do problema deve ler o guião da aula #02]
Imagina a seguinte espiral de números (começa em 01 e vai andando por ordem crescente):
| +--+--+--+--+--+--+ | +2 |21|22|23|24|25|26| | +--+--+--+--+--+--+ | +1 |20|07|08|09|10|27| +--+--+--+--+--+--+ Y 0 |19|06|01|02|11|28| +--+--+--+--+--+--+ | -1 |18|05|04|03|12|29| | +--+--+--+--+--+--+ | -2 |17|16|15|14|13|30| | +--+--+--+--+--+--+ ... -2 -1 0 +1 +2 +3 ------- X --------
Imagina agora um sistema de coordenadas (X,Y), onde a origem seja o número 01. Desse modo, podemos dizer que 01 está na posição (0,0), 02 está na posição (1,0), 03 na posição (1,-1), 04 na posição (0,-1), 05 na posição (-1,-1), e por aí adiante.
Será que consegues fazer um programa que dado um número, indique as suas coordenadas na espiral de números?
O input é constituído por uma linha contendo um único número N (1 ≤ N ≤ 1 000 000 000), que corresponde ao número cujas coordenadas na espiral queremos saber.
O output deve conter uma única linha no formato (X,Y), descrevendo as coordenadas do número N na espiral de números, como atrás explicado.
Input | Output |
---|---|
5 | (-1,-1) |
Input | Output |
---|---|
25 | (2,2) |
Estruturas de Dados (CC1007)
DCC/FCUP - Faculdade de Ciências da Universidade do Porto