2298 - Magnitudine: Difference between revisions

From Bitnami MediaWiki
Raul (talk | contribs)
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('magnitudine.in.txt', 'r')
sys.stdin = open('magnitudinein.txt', 'r')
sys.stdout = open('magnitudine.out.txt', 'w')
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 94 = 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>