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

     +-------------+------------+
     | input.txt   | output.txt |
+----+-------------+------------+
| 1° | 75120 9     | -16        |
+----+-------------+------------+
| 2° | 324783902 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()