2298 - Magnitudine: Difference between revisions
Pagină nouă: = Cerința = În această problemă veţi primi două numere natural <code>N</code>, şi <code>K</code>. Definim magnitudinea unui număr ca fiind diferenţa dintre cifra maximă şi cifra minimă ale lui. De exemplu, magnitudinea lui <code>9748</code> este <code>9</code> – <code>4</code> = <code>5</code>. Eliminaţi maxim <code>K</code> cifre din numărul <code>N</code>, astfel încât magnitudinea numărului obţinut să fie cât mai mică. = Date de intrare = În fiș... |
|||
Line 30: | Line 30: | ||
import sys | import sys | ||
sys.stdin = open(' | sys.stdin = open('magnitudinein.txt', 'r') | ||
sys.stdout = open(' | sys.stdout = open('magnitudineout.txt', 'w') | ||
n, k = map(int, input().split()) | n, k = map(int, input().split()) |
Latest revision as of 19:14, 10 January 2024
Cerința[edit | edit source]
Î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[edit | edit source]
În fișierul magnitudine.in
se află pe prima linie numerele N
si K
separate prin spaţii.
Date de ieșire[edit | edit source]
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[edit | edit source]
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:[edit | edit source]
magnitudine.in
9748 1
magnitudine.out
2
Încărcare soluție[edit | edit source]
Lipește codul aici[edit | edit source]
<syntaxhighlight lang="python" line="1"> import sys
sys.stdin = open('magnitudinein.txt', 'r') sys.stdout = open('magnitudineout.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>