Lista de probleme 15

#1758 Bile3

Matei a inventat un nou joc cu bile. Terenul de joc este o tablă dreptunghiulară aşezată vertical. Tabla este împărţită în m*n celule, aşezate în m linii şi n coloane. În unele dintre celule se află obstacole.

De sus, din celulele aflate pe prima linie, sunt lăsate să cadă bile. Bilele cad vertical până la întâlnirea unui obstacol sau până în celula cea mai de jos din coloana pe care se află. Prima bilă care loveşte un obstacol se deplasează pe orizontală în coloana alăturată din stânga, apoi îşi continuă căderea. Fiecare dintre celelalte bile care lovesc acelaşi obstacol se deplasează pe orizontală, în coloana alăturată, dar în direcţie opusă faţă de bila care a lovit acest obstacol exact înaintea lor, apoi îşi continuă căderea.

Cunoscând numărul de bile lăsate să cadă de pe fiecare celulă a primei linii şi poziţia obstacolelor, determinaţi numărul de bile ajunse în fiecare celulă a ultimei linii. Poziţiile obstacolelor sunt indicate prin linia şi coloana lor (colţul din stânga sus corespunde liniei 1 şi coloanei 1).

#1759 Alune

Chip şi Dale s-au plictisit de jocurile de până acum şi au hotărât că este timpul să îmbine culesul alunelor cu un joc care să le stimuleze inteligenţa. Chip propune: “eu pun alunele culese de mine într-un şir de C scorburi, iar tu pui alunele culese de tine într-un alt şir, de D scorburi”.
Dale a ascultat, a fost de acord şi a propus ca jocul să continue astfel: „dacă la împărţirea numărului de alune din prima scorbură a şirului meu la numărul de alune din fiecare scorbură a şirului tău se obţine acelaşi rest, atunci consider că scorbura mea este umplută corect şi scriu pe hârtie cifra 1, altfel o consider umplută incorect şi scriu cifra 0. Verific apoi, aplicând aceeaşi regulă, dacă a doua scorbură din şirul meu este umplută corect, adică dacă la împărţirea numărului de alune din aceasta la numărul de alune din fiecare scorbură din şirul tău, se obţine acelaşi rest. Notez pe hârtie, în continuare, rezultatul verificării (0 sau 1). Încheiem jocul atunci când terminăm de verificat, după această regulă, toate cele D scorburi ale mele.”
Scrieţi un program care citeşte din fişierul alune.in numerele naturale nenule C şi D şi numărul de alune din fiecare scorbură din şirul lui Chip, respectiv al lui Dale. Programul determină şirul de cifre notat de Dale pe hârtie.

ONI 2012, Clasa a VIII-a

Se dau două numere naturale w şi h reprezentând lungimile laturilor dreptunghiului ABCD, un număr natural n şi n numere naturale x1, x2,… xn cu propietatea din enunt. Punctul P se plasează, pe rând, în toate punctele interioare dreptunghiului ABCD care sunt colţuri ale unor pătrate de latură 1. Pentru fiecare valoare x[i] (1 ≤ i ≤ n), determinaţi numărul de segmente distincte care trec prin exact x[i] pătrate
2-intersectate.

ONI 2012, Clasa a IX-a

O culegere de probleme are P pagini, numerotate de la 1 la P. Problemele din culegere sunt numerotate cu 1,2,3,...,etc, în ordinea apariţiei lor în culegere. Pe prima pagină a culegerii este scrisă o singură problemă (cea cu numărul 1). Pe a doua pagină sunt scrise exact două probleme (cele cu numerele 2 şi 3, în această ordine). Pe cea de a P-a pagină sunt scrise exact P probleme.
Scrieţi un program care citeşte numerele naturale P şi N şi determină valorile:
a) T, numărul total de cifre care au fost utilizate în numerotarea tuturor problemelor din culegere;
b) M, numărul minim de pagini pe care ar trebui să le aibă culegerea, astfel încât aceasta să conţină şi problema numerotată cu N.

Un indicator cu 7 segmente este un dispozitiv de afişaj electronic destinat afişării unei cifre zecimale. Aceste dispozitive sunt utilizate pe scară largă în ceasuri digitale, contoare electronice şi alte aparate, pentru afişarea informaţiilor numerice. Cele 7 segmente au fost notate cu literele a, b, c, d, e, f, g, după modelul din figura de mai jos.

Afişarea uneia din cifrele de la 1 la 9 constă în aprinderea anumitor segmente din cele 7, după cum urmează:
Cifră 1 2 3 4 5 6 7 8 9
Segmente aprinse b,c a,b,d,e,g a,b,c,d,g b,c,f,g a,c,d,f,g a,c,d,e,f,g a,b,c a,b,c,d,e,f,g a,b,c,d,f,g

Proiectarea diverselor sisteme de afişaj trebuie să ţină cont şi de puterea necesară pentru afişarea unei cifre. Pentru aprinderea unui segment este necesară o putere de 1 mW. Astfel, în funcţie de cifra afişată, dispozitivul necesită o putere egală cu numărul de segmente aprinse la afişarea cifrei respective. Puterea necesară pentru afişarea unui număr natural este egală cu suma puterilor necesare afişării fiecăreia dintre cifrele sale.

Să se scrie un program care citeşte două numere naturale nenule n şi p, (numărul n având toate cifrele nenule)şi calculează:

  • numărul natural k reprezentând puterea necesară pentru afişarea numărului n;
  • cel mai mare număr natural t, format numai din cifre nenule, mai mic sau egal decât n, care necesită pentru afişare o putere de cel mult p mW.

#1656 UnuZero

Se consideră un şir format din N+2 cifre binare, care conţine cel puţin o cifră 1 şi cel puţin trei cifre 0; prima şi ultima cifră a şirului sunt 0.
Numim 1-secvenţă o succesiune formată numai din cifre 1, aflate pe poziţii consecutive în acest şir, delimitată de câte o cifră 0.
Corina construieşte un astfel de şir, în care numărul de cifre 1 ale fiecărei 1-secvenţe să fie cuprins între două numere naturale date, p şi q. Scrieţi un program care să determine un număr natural K, egal cu restul împărţirii la 666013 a numărului de şiruri distincte, de tipul celui construit de Corina.

#1708 Cuburi3

Ionuţ a învăţat la şcoală să lucreze cu numere mari. El are la dispoziţie un şir de N numere naturale nenule. Din fiecare număr el şterge exact trei cifre, fără să schimbe ordinea cifrelor rămase, astfel încât să obţină cel mai mic număr natural nenul posibil. De exemplu, din numărul 20731049 se obţine numărul 20049, iar din numărul 13004 se obţine numărul 10. Înlocuind fiecare număr citit cu numărul obţinut prin operaţia de mai sus, Ionuţ obţine un nou şir şi scrie termenii acestuia pe feţele unor cuburi astfel: primele şase numere din şir le scrie pe primul cub şi îl notează pe acesta cu 1, următoarele şase numere din şir le scrie pe un alt cub pe care îl notează cu 2 ş.a.m.d.
Aceste cuburi au fost distribuite în piramide după modelul din figura de mai sus.

Piramidele au fost numerotate cu numere naturale consecutive. Piramida cu numărul de ordine 1 este formată numai din cubul cu numărul de ordine 1 şi are un singur nivel, piramida cu numărul de ordine 2 are pe primul nivel cuburile 2, 3 şi 4 iar pe ultimul nivel cubul 5 ş.a.m.d.

Două niveluri alăturate în cadrul unei piramide diferă prin exact două cuburi. Primul nivel al unei piramide conţine cu două cuburi mai mult decât primul nivel al piramidei precedente. Piramida se consideră completă dacă pe ultimul nivel are un singur cub.

Scrieţi un program care citeşte numerele naturale nenule N şi K, apoi cele N numere naturale ce fac parte din şirul iniţial, şi determină:
a) Numărul de piramide complete construite de Ionuţ.
b) Numerele scrise pe cuburile din primele K piramide.

#1727 Culori3

Fiecare dintre cei N copii, numerotați de la 1 la N, primește câte un cartonaș colorat. Doamna dirigintă îi așează în cerc, în ordinea numerotării, în sens orar. Astfel, fiecare copil are doi vecini, așezați în stânga, respectiv în dreapta lui.
Andrei, pasionat de informatică, asociază fiecărei culori distincte un cod, reprezentat printr-un număr natural nenul, și inscripționează fiecare cartonaș cu codul corespunzător culorii acestuia.
Scrieţi un program care citeşte două numere naturale N şi K şi determină pentru Andrei:
a) numărul copiilor din cerc care au cartonaşe de aceeaşi culoare cu cartonaşele vecinilor;
b) numărul maxim de cartonaşe de aceeaşi culoare ce sunt deţinute de copiii aşezaţi pe K poziţii consecutive în cercul format.

#1730 Sstabil

Numim număr sstabil orice număr natural care este format dintr-o singură cifră sau care are suma oricăror două cifre vecine strict mai mare decât nouă.

Asupra oricărui număr care nu este sstabil se pot efectua operaţii de înlocuire a oricăror două cifre vecine care au suma strict mai mică decât zece cu o cifră egală cu suma lor.

Operaţiile de înlocuire pot fi aplicate, în acelaşi condiţii, şi asupra numerelor rezultate după fiecare înlocuire, de câte ori este nevoie, până când se obţine un număr sstabil.

De exemplu, 291 este număr sstabil deoarece 2+9>9 şi 9+1>9, iar 183 nu este sstabil pentru că 1+8<10. Din numărul 2453, efectuând o singură înlocuire, putem obţine 653 sau 293 (număr sstabil) sau 248. Numărul 653, nefiind sstabil, permite o nouă operaţie de înlocuire, obţinând astfel numărul 68, care este sstabil. Analog, din numărul 248 se poate obţine numărul sstabil 68.

Scrieţi un program care să determine cel mai mare număr natural sstabil care se poate obţine dintr-un număr natural dat, aplicând una sau mai multe operaţii de înlocuire de tipul menţionat.

#1731 Numar5

Pentru un număr dat cu k cifre \(c_1c_2…c_k\), se numeşte algoritm de deplasare circulară spre dreapta de la o cifră iniţială \(c_i\), la o cifră finală \(c_j\), deplasarea din cifră în cifră spre dreapta de \(c_i\) ori (1≤i,j≤k). Dacă pe parcursul deplasării s-a ajuns la cifra \(c_k\), se continuă deplasarea circulară spre dreapta cu cifra \(c_1\).
Un număr cu k cifre se numeşte număr „circular” dacă îndeplineşte următoarele două cerinţe:

  • toate cifrele sunt nenule;
  • pornind de la cifra \(c_1\), aplicând algoritmul de deplasare circulară spre dreapta de exact k ori, se ajunge din nou la \(c_1\), fiecare dintre cifrele numărului fiind exact o singură dată cifră iniţială.

Scrieţi un program care citeşte numărul natural nenul n, apoi numerele naturale \(x_1, x_2, …, x_n\), şi determină:
a) cel mai mare număr din şir în care există cel puţin o cifră care apare de minimum două ori, iar în cazul în care în şir nu există un astfel de număr, se va afişa cel mai mare număr din şir;
b) un şir \(a_1, a_2, …, a_n\) de n numere naturale pentru care un element \(a_i\)(1≤i≤n)se calculează astfel:

  • este egal cu \(x_i\) , dacă \(x_i\) este număr circular;
  • este numărul cel mai apropiat de \(x_i\) (număr mai mare sau mai mic decât \(x_i\)), cu proprietatea că este număr circular; dacă pentru un număr din şir se identifică un număr circular y, \( y > x_i\) şi un număr circular z, z<\(x_i\), pentru care \( y – x_i\) = \(x_i – z\), atunci se va alege numărul y.