Cambi di base

Olimpiadi Italiane di Informatica – Correttore online – Facili

È assegnato un intero n in notazione decimale.
Si deve convertire n nella notazione in base k e quindi trovare la differenza fra il prodotto e la somma delle sue cifre in questa notazione.
Per esempio, se n=239 e k=8, la rappresentazione ottale di n è 357 e la soluzione del problema è 3*5*7 – (3+5+7) = 90.

Esempi di input/output

InputOutput
n = 239
k = 8
90
1°n = 75120
k = 9
-16
2°n = 324783902
k = 9
37594

Osserva

  • quoziente: le cifre più significative di n
  • resto: la cifra meno significativa di n
n = 239
k = 8

prodotto = 1
somma    = 0
while(n > 0):
    quoziente = n//k
    resto     = n%k
    prodotto *= resto
    somma    += resto
    n         = quoziente

differenza = prodotto-somma
print(differenza)

Versione OII

f = open("input.txt", "r")
linea = f.read()
f.close()
dati = linea.split()
n = int(dati[0])
k = int(dati[1])

prodotto = 1
somma    = 0
while(n > 0):
    quoziente = n//k
    resto     = n%k
    prodotto *= resto
    somma    += resto
    n         = quoziente

differenza = prodotto-somma

stringa = str(differenza)
f = open("output.txt", "w")
f.write(stringa)
f.close()