2298 - Magnitudine
Cerința
În această problemă veţi primi două numere natural N
, şi K
. Definim magnitudinea unui număr ca fiind diferenţa dintre cifra maximă şi cifra minimă ale lui. De exemplu, magnitudinea lui 9748
este 9
– 4
= 5
.
Eliminaţi maxim K
cifre din numărul N
, astfel încât magnitudinea numărului obţinut să fie cât mai mică.
Date de intrare
În fișierul magnitudine.in
se află pe prima linie numerele N
si K
separate prin spaţii.
Date de ieșire
Afișați în fișierul magnitudine.out
magnitudinea minimă care se poate obţine după eliminarea a K
cifre ale lui N
.
Restricții și precizări
1 ≤ N ≤ 1018
- pentru teste în valoare de 30 puncte,
K = 0
- pentru teste în valoare de 30 puncte,
K = 1
- pentru teste în valoare de 40 puncte,
K = 2
Exemplu 1:
magnitudine.in
9748 1
magnitudine.out
2
Încărcare soluție
Lipește codul aici
<syntaxhighlight lang="python" line="1"> import sys
sys.stdin = open('magnitudine.in.txt', 'r') sys.stdout = open('magnitudine.out.txt', 'w')
n, k = map(int, input().split()) p = 0 a = [] while n:
a.append(n % 10) n //= 10 p += 1
a.sort() if k == 0:
print(a[p-1] - a[0])
elif k == 1:
if a[p-2] - a[0] <= a[p-1] - a[1]: print(a[p-2] - a[0]) else: print(a[p-1] - a[1])
else:
if a[p-3] - a[0] <= a[p-1] - a[2] and a[p-3] - a[0] <= a[p-2] - a[1]: print(a[p-3] - a[0]) elif a[p-1] - a[2] <= a[p-3] - a[0] and a[p-1] - a[2] <= a[p-2] - a[1]: print(a[p-1] - a[2]) else: print(a[p-2] - a[1])
</syntaxhighlight>