FATORIAL.py (SPOJ)

De GirinoWiki

O código a seguir foi baseado nas informações do seguinte link:

[editar] Código

#!/usr/bin/python
 
#import psyco
#psyco.full()
import sys
 
def to_base_5(n):
    val = n
    ret = 0
    l = 0
    while val > 0:
        ret = 10*ret + (val % 5)
        val = val / 5
        l = l + 1
    return (ret, l)
 
fact = [1, 1, 2, 6, 4, 2]
def last_digit(n):
    global fact
    a_l = to_base_5(num)
    a = a_l[0]
    l = a_l[1]
    val = 1
    for i in range(0, l):
        a_i = (a / 10**(l-i-1)) % 10
        val = (val * fact[a_i] * (2**(i*a_i))) % 10
    return (6*val) % 10
 
if __name__ == '__main__':
    count = 1
    for line in sys.stdin:
        num = int(line)
        print "Instancia", count
        print last_digit(num)
        print
        count = count + 1
Ferramentas pessoais
Social Blogging
  • StumbleUpon
  • Adicionar aos Favoritos BlogBlogs
  • Adicionar esta página no Linkk
  • Add to Technorati Favorites
patrocinadores
Espaço comercial
Compare Produtos, Lojas e Preços