4018 - Mos Craciun 3: Difference between revisions

From Bitnami MediaWiki
Pop Giulia (talk | contribs)
Pagină nouă: Enunt Cunoscutul programator Văndămel are la dispoziție o matrice binară cu <code>n</code> linii (numerotate de la <code>1</code> la <code>n</code>) și <code>m</code> coloane (numerotate de la <code>1</code> la <code>m</code>). Văndămel poate efectua, de câte ori e posibil, următoarea operație: alege două poziții vecine pe linie sau pe coloană și care conțin ambele valoarea <code>1</code> și le transformă în <code>0</code>. De exemplu, în matricea: <code>...
 
Pop Giulia (talk | contribs)
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
Enunt
Sursa: [https://www.pbinfo.ro/probleme/4018/moscraciun3]


Cunoscutul programator Văndămel are la dispoziție o matrice binară cu <code>n</code> linii (numerotate de la <code>1</code> la <code>n</code>) și <code>m</code> coloane (numerotate de la <code>1</code> la <code>m</code>). Văndămel poate efectua, de câte ori e posibil, următoarea operație: alege două poziții vecine pe linie sau pe coloană și care conțin ambele valoarea <code>1</code> și le transformă în <code>0</code>. De exemplu, în matricea:
==Cerința==
Moș Crăciun este pregătit să ofere cadouri tuturor copiilor. Singura lui problema este Grinch, care încearcă să deschidă seiful cu cadouri al lui Moș Crăciun. Grinch a aflat codul, așa că Moș Craciun a decis să îl schimbe cu unul nou. Presupunem că parola seifului este n și avem 2 numere, p și k. Moș Craciun va inversa primele p cifre și ultimele k cifre ale parolei – parola este formată numai din cifre nenule. Fiind foarte bătrân și greșind mult la calcule, vă roagă să îl ajutați să determine noua parola.


<code>0 1 1 0</code>
==Date de intrare==
Programul citește de la tastatură numerele n p k.


<code>1 1 0 0</code>
==Date de ieșire==
Programul va afișa pe ecran noul cod.


<code>1 0 0 0</code>
==Restricții și precizări==
 
1 ≤ n < 1000000000000000000
<code>0 1 1 0</code>
dacă n nu are cel puțin p+k cifre, se va afișa mesajul imposibil.
 
==Exemplu:==
el poate alege valorile de <code>1</code> de la pozițiile vecine <code>(1,2)</code> și <code>(2,2)</code>, le transformă în <code>0</code> și obține matricea:
 
<code>0 0 1 0</code>
 
<code>1 0 0 0</code>
 
<code>1 0 0 0</code>
 
<code>0 1 1 0</code>
 
= Cerința =
Văndămel știe să rezolve orice problemă, dar vrea să vadă dacă știți și voi să aflați numărul maxim posibil de operații care se pot efectua pe matricea dată.
 
= Date de intrare =
Programul citește de la tastatură numerele <code>n</code> și <code>m</code> și de pe următoarele <code>n</code> linii câte <code>m</code> numere binare reprezentând valorile din matrice.
 
= Date de ieșire =
Programul va afișa pe ecran un singur număr natural reprezentând numărul maxim posibil de operații care se pot aplica asupra matricei.
 
= Restricții și precizări =
 
* <code>1 ≤ n, m ≤ 100</code>
 
= Exemplul 1: =
Intrare
Intrare
4 4
0 1 1 0
1 1 0 0
1 0 0 0
0 1 1 0
Ieșire
3


=== Explicație ===
1428429 2 3
Se efectuează operațiile la <code>(2,1)</code> și <code>(3,1)</code>, la <code>(1,2)</code> și <code>(2,2)</code> și la <code>(4,2)</code> și <code>(4,3)</code>. După efectuarea celor <code>3</code> operații matricea arată astfel:
 
<code>0 0 1 0</code>
 
<code>0 0 0 0</code>
 
<code>0 0 0 0</code>
 
<code>0 0 0 0</code>
 
= Exemplul 2: =
Intrare
5 4
0 1 0 0
0 1 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Ieșire
Ieșire
1


== Încărcare soluție ==
4128924
==Încărcare soluție==
<syntaxhighlight lang="python" line>
n, p, k = input().split()
n = int(n)
p = int(p)
k = int(k)
if len(str(n)) < p + k:
    print("imposibil")
    exit()
n_str = str(n)
n_str = n_str[:p][::-1] + n_str[p:]
n_str = n_str[:-k] + n_str[-k:][::-1]
new_n = int(n_str)
print(new_n)
</syntaxhighlight>

Latest revision as of 12:45, 20 May 2023

Sursa: [1]

Cerința[edit | edit source]

Moș Crăciun este pregătit să ofere cadouri tuturor copiilor. Singura lui problema este Grinch, care încearcă să deschidă seiful cu cadouri al lui Moș Crăciun. Grinch a aflat codul, așa că Moș Craciun a decis să îl schimbe cu unul nou. Presupunem că parola seifului este n și avem 2 numere, p și k. Moș Craciun va inversa primele p cifre și ultimele k cifre ale parolei – parola este formată numai din cifre nenule. Fiind foarte bătrân și greșind mult la calcule, vă roagă să îl ajutați să determine noua parola.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n p k.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran noul cod.

Restricții și precizări[edit | edit source]

1 ≤ n < 1000000000000000000 dacă n nu are cel puțin p+k cifre, se va afișa mesajul imposibil.

Exemplu:[edit | edit source]

Intrare

1428429 2 3 Ieșire

4128924

Încărcare soluție[edit | edit source]

<syntaxhighlight lang="python" line> n, p, k = input().split() n = int(n) p = int(p) k = int(k) if len(str(n)) < p + k:

   print("imposibil")
   exit()

n_str = str(n) n_str = n_str[:p][::-1] + n_str[p:] n_str = n_str[:-k] + n_str[-k:][::-1] new_n = int(n_str) print(new_n) </syntaxhighlight>