-
Notifications
You must be signed in to change notification settings - Fork 38
/
1202.poti
46 lines (40 loc) · 920 Bytes
/
1202.poti
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
exp(base: Inteiro, expoente: Inteiro): Inteiro
var p = 1
var x = base
var y = expoente
enquanto y <> 0 faça
se y mod 2 == 1 então
p := (p * x) mod 1500
y := y - 1
fim
x := (x * x) mod 1500
y := (y / 2).inteiro
fim
p
fim
var fib = Lista.mutável(1511, 0)
fib[1] := 1
fib[2] := 1
para x de 3 até 1510 faça
fib[x] := (fib[x-1] + fib[x-2]) mod 1000
fim
t = leia_inteiro
para count de 1 até t faça
var numero = leia_texto
var d = 0
var l = 0
para i de numero.tamanho até 1 passo -1 faça
se numero[i] == '1' então
d := (d + exp(2, l)) mod 1500
fim
l := l + 1
fim
se d <> 0 então
d := fib[d]
fim
escolha d
caso n se n < 10 => escreva "00{d}"
caso n se n < 100 => escreva "0{d}"
caso _ => escreva "{d}"
fim
fim