La confederazione IMO

Olimpiadi di Matematica – Gara Nazionale a Squadre 2001 – Numero 1

La confederazione IMO è una pacifica civiltà aliena che si trova nella Galassia Asip.
La galassia è formata da n gruppi di stelle ciascuno dei quali forma un cerchio.
Il cerchio più piccolo (chiamato I_1) ha raggio 1 Imoparsec.
Se ad esso si circoscrive un quadrato e a questo si circoscrive un cerchio si trova la seconda cintura di stelle I_2.
In maniera analoga a partire da I_3 si ottiene I_3 e poi I_4, I_5, …
L’ultima cintura è l’unica che ha un raggio più grande di 2001 Imoparsec.
Quante sono in tutto le cinture?

Vedi la discussione

import math

LIMITE = 2001
SQRT2  = math.sqrt(2)

indice = 1
raggio = 1
print(indice, "\t", raggio)

while(raggio <= LIMITE):
    indice += 1
    raggio *= SQRT2
    print(indice, "\t", raggio)
1       1
2       1.4142135623730951
3       2.0000000000000004
4       2.8284271247461907
5       4.000000000000001
6       5.6568542494923815
7       8.000000000000002
8       11.313708498984763
9       16.000000000000004
10      22.627416997969526
11      32.00000000000001
12      45.25483399593905
13      64.00000000000001
14      90.5096679918781
15      128.00000000000003
16      181.0193359837562
17      256.00000000000006
18      362.0386719675124
19      512.0000000000001
20      724.0773439350248
21      1024.0000000000002
22      1448.1546878700497
23      2048.0000000000005

SymPy

Utilizziamo il calcolo simbolico per la radice quadrata

import sympy as sp

LIMITE = 2001
SQRT2  = sp.sqrt(2)

indice = 1
raggio = 1
print(indice, "\t", raggio)

while(raggio <= LIMITE):
    indice += 1
    raggio *= SQRT2
    print(indice, "\t", raggio)
1       1
2       sqrt(2)
3       2
4       2*sqrt(2)
5       4
6       4*sqrt(2)
7       8
8       8*sqrt(2)
9       16
10      16*sqrt(2)
11      32
12      32*sqrt(2)
13      64
14      64*sqrt(2)
15      128
16      128*sqrt(2)
17      256
18      256*sqrt(2)
19      512
20      512*sqrt(2)
21      1024
22      1024*sqrt(2)
23      2048