Considerăm problema #biprime :
Se dă \( n \) un număr natural care este produsul a două numere prime distincte și \( m \) reprezentând numărul numerelor mai mici sau egale cu n, prime cu n. Aflați cele două numere prime din descompunerea lui \( n \). \( 1 ≤ m ≤ n ≤ 10^{25} \)
Valorile mari ale lui \( n \) și \( m \) nu permit aplicarea de descompunere în factori. De fapt, valorile date depășesc valorile maxime ale tipurilor întregi reprezentate pe 64 de biți (unsigned long long in C++).
Proprietățile particulare ale acestor valori permit o rezolvare bazată pe obseervații matematice.
Fie \( x \) și \( y \), \(x < y\) cele două numere care intervin în descompunerea lui \( n \). Atunci avem:
$$ \begin{cases} x \cdot y = n \\ \varphi(n) = m \end{cases} $$
Dar \( \varphi(n) = n (1 – \frac{1}{x}) (1 – \frac{1}{y}) = x \cdot y \cdot \frac{x-1}{x} \cdot \frac{y-1}{y} = (x-1) \cdot (y-1) \), deci \( (x-1) \cdot (y-1) = m \), \( xy-x-y+1 = m \).
Obținem astfel un sistem:
$$ \begin{cases} x \cdot y = n\\ xy-x-y+1 = m\end{cases}$$
adică
$$ \begin{cases} x \cdot y = n\\ x+y = n-m+1\end{cases}$$
Exprimându-l pe \(y\) din a doua ecuație și înlocuind în prima obținem ecuația de gradul II:
$$ x^{2} – (n-m+1) \cdot x + n = 0 $$
În care \( a = 1, b = -(n – m +1), c = n \). O rezolvăm.
$$ \Delta = b^{2} – 4ac $$
Ecuația are două soluții pozitive. O vom deterina pe cea mai mică, deoarece am fixat \(x < y\) (cealaltă soluție a ecuației va da pereche în care \( x > y\)).
$$ x = \frac{-b – \sqrt{\Delta}}{2 \cdot a} $$
O reprezentare în pseudocod a algortmului de rezolvare este
citeste n , m a ← 1 b ← -(n-m+1) c ← n delta ← b*b-4*a*c x ← (-b - sqrt(delta)) / (2*a) y ← n - x scrie x,y
Restricțiile din enunț (n,m ≤ 1025) nu permit scrierea unui program C++ care folosește doar simple de date, fiind necesară implementarea numerelor mari. Soluția de mai jos obține punctaj parțial.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long long n,m,x,y,a,b,c,rdelta;
cin >> n >> m;
a = 1, b = -(n-m+1), c = n;
rdelta = sqrt(1.0*b*b - 4.0*a*c);
x = (-b - rdelta) / (2*a);
y = n / x;
cout << x << ' ' << y;
return 0;
}
CSS (Cascading Style Sheets) este un limbaj folosit pentru a stiliza paginile web. Cu ajutorul CSS, poți schimba aspectul elementelor HTML, cum ar fi culoarea, dimensiunea textului sau spațierea.
Termeni de bază în CSS:
Exemplu simplu:
p {
color: blue;
font-size: 18px;
}
În acest exemplu, toate paragrafele (<p>) vor avea text albastru și dimensiunea fontului de 18px.
Există trei metode principale de a adăuga CSS:
1. CSS inline – direct în elementul HTML, folosind atributul style:
<p style="color: red;">Text roșu</p>
2. CSS intern – într-un bloc <style> în secțiunea <head> a paginii:
<head>
<style>
p { color: green; }
</style>
</head>
3. CSS extern – într-un fișier separat .css, legat cu <link>:
<head> <link rel="stylesheet" href="stil.css"> </head>
Această metodă este recomandată pentru proiecte mai mari, deoarece permite reutilizarea și organizarea mai bună a stilurilor.
O foaie de stil este un set de reguli. Pentru a defini o regulă este nevoie de un selector și o declarație. Selectorul precizează ce elemente din pagina web vor utiliza parametri definiți în declarație.
p /*selector*/
{
color: red; /*declarație*/
}
Iată o prezentare a celor mai frecvent utilizate selecții CSS, împreună cu exemple:
| Selector | Descriere | Exemplu | Rezultat |
| element | Seleționează toate elementele de tip element | p |
Toate paragrafele <p> |
| .clasa | Seleționează elementele cu clasa specificată | .button |
Toate elementele cu clasa button |
| #id | Seleționează elementul cu ID-ul specificat | #header |
Elementul cu ID header |
Mai multe despre selectorii element: developer.mozilla.org/en-US/docs/Web/CSS/Type_selectors.
Mai multe despre selectorii clasă: developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors.
mai multe despre selectorii ID: developer.mozilla.org/en-US/docs/Web/CSS/ID_selectors.
| Selector | Descriere | Exemplu | Rezultat |
| element1 element2 | Elemente element2 care sunt copii (descendenți) ai lui element1 | div p |
Toate <p>-urile din interiorul unui <div> |
| element1 > element2 | element2 ca și copil direct al lui element1 | ul > li |
<li>-urile directe într-un <ul> |
| element1 + element2 | element2 care urmează imediat după element1 | h1 + p |
<p> care urmează imediat după un <h1> |
| element1 ~ element2 | Toate element2 care urmează după element1 în același părinte | h1 ~ p |
Toate <p>-urile după un <h1> în același container |
| Selector | Descriere | Exemplu | Rezultat |
| [type=“text”] | Elemente cu atribut type egal cu “text” | input[type="text"] |
<input type="text"> |
| [href^=“https”] | Atribut href care începe cu https | a[href^="https"] |
Link-urile HTTPS |
| [class*=“btn”] | Atribut class care conține btn | [class*="btn"] |
Elemente cu clasa ce conține btn |
Mai multe despre selectorii atribut: developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors.
| Selector | Descriere Exemplu | Rezultat | |
| a:hover | Linkurile a atunci când cursorul trece peste ele | a:hover { color: red; } |
Schimbă culoarea linkurilor la hover |
| :first-child | Primul copil al unui element | p:first-child |
Primele <p>-uri dintr-un container |
| :last-child | Ultimul copil | div > p:last-child |
Ultimul <p> într-un <div> |
| ::before | Pseudo-element pentru adăugarea de conținut înaintea elementului | p::before { content: "Note: "; } |
Text adăugat înainte de paragrafe |
Mai multe despre pseudoclase: developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes.
Mai multe despre pseudoelemente: developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements.
Se pot combina mai mulți selector pentru a selecta elemente precise:
div.content > p.article:first-letter {
color: blue;
}
Regula de mai sus se aplică la prima literă dintr-un paragraf <p> cu clasa article care este copil al unui <div> care are clasa content.
In CSS, unitățile de măsură folosite pentru dimensiuni, distanțe și alte proprietăți sunt diverse. Iată cele mai frecvente unități și explicarea lor:
| Unitate | Descriere | Exemplu |
| px | pixel, dimensiune fixă, independent de rezoluție | width: 200px; |
| pt | point (1/72 inch), rar utilizat în web | font-size: 12pt; |
| cm | centimetru | height: 5cm; |
| mm | milimetru | width: 50mm; |
| in | inch | margin: 1in; |
| pc | pica, 1/6 inch | font-size: 12pc; |
| Unitate | Descriere | Exemplu |
| % | procent față de elementul părinte | width: 50%; |
| em | dimensiunea fontului elementului părinte | font-size: 2em; |
| rem | dimensiunea fontului rădăcinii documentului (html) | margin: 1.5rem; |
| vw | viewport width, procent din lățimea viewport-ului | width: 50vw; |
| vh | viewport height, procent din înălțimea viewport-ului | height: 100vh; |
| vmin | minimul dintre vw și vh | width: 10vmin; |
| vmax | maximul dintre vw și vh | height: 10vmax; |
| ch | lungimea medie a character-ului „0” în fontul curent | width: 20ch; |
| ex | înălțimea literei „x” în fontul curent | height: 10ex; |
Unitățile de măsură sunt:
Setează culoarea textului.
p {
color: #333333;
}
Setează culoarea de fundal a unui element.
div {
background-color: #f0f0f0;
}
Adaugă o imagine de fundal.
body {
background-image: url('imagine.jpg');
}
Controlează dimensiunea imaginii de fundal.
header {
background-image: url('header.jpg');
background-size: cover; /* Poate fi 'contain', 'auto', '100px 50px', etc. */
}
Determină dacă imaginea de fundal se repetă.
section {
background-image: url('pattern.png');
background-repeat: no-repeat; /* Poate fi 'repeat-x', 'repeat-y', sau 'repeat' */
}
Setează familia de font (tipul de font).
h1 {
font-family: 'Arial', 'Helvetica', sans-serif;
}
Setează dimensiunea textului.
p {
font-size: 16px; /* poți folosi și '1.2em', '1rem', etc. */
}
Setează grosimea fontului.
strong {
font-weight: bold; /* sau numeric, ex: 700 */
}
Controlul distanței între liniile de text.
p {
line-height: 1.5; /* proporțional sau în px: 24px */
}
Alinierea textului.
h2 {
text-align: center; /* sau left, right, justify */
}
Decorarea textului (sublinieri, linii peste etc.).
a {
text-decoration: none; /* sau underline, line-through, overline */
}
Spațiu în exteriorul elementului (distanța față de elementele înconjurătoare).
div {
margin: 20px; /* spațiu peste tot în jur */
}
Spațiu în interiorul elementului (distanța față de conținut).
p {
padding: 10px; /* spațiu în jurul textului/paginilor */
}
Lățimea exactă a unui element.
img {
width: 300px;
}
Înălțimea exactă a unui element.
div {
height: 200px;
}
Limitează lățimea maximă a elementului.
img {
max-width: 100%; /* se ajustează la și mai mic dacă e mai mare */
}
Limitează înălțimea maximă.
img {
max-height: 150px;
}
Limitează lățimea minimă.
div {
min-width: 200px;
}
Limitează înălțimea minimă.
div {
min-height: 100px;
}
Setează grosimea, stilul și culoarea border-ului.
div {
border: 2px solid #000; /* 2px grosime, stil solid, culoare neagră */
}
Rotunjeste colțurile border-ului.
button {
border-radius: 8px; /* colțuri rotunjite cu radius 8px */
}
Setează doar culoarea border-ului.
h1 {
border: 2px dashed;
border-color: red; /* culoare roșie border */
}
Setează un contur în jurul elementului (similar cu border, dar nu ocupă spațiu în layout).
input {
outline: 3px dashed blue; /* contur dashed albastru, 3px grosime */
}
Setează doar culoarea conturului.
a {
outline: 2px dotted;
outline-color: green; /* culoare verde a conturului */
}
Controlază modul în care este afișat un element.
div {
display: block; /* element de tip block (default) */
display: inline; /* de tip inline */
display: flex; /* folosit pentru layout flexbox */
display: grid; /* grid layout */
display: none; /* ascunde elementul */
}
| Valori posibile | Explicație |
| block | Element de tip bloc, ocupă întreaga lățime, începe pe linie nouă. Exemplu: |
| inline | Element inline, ocupă doar cât are nevoie, nu începe pe linie nouă. Exemplu: |
| inline-block | Ca inline, dar poți seta lățime/înălțime. |
| none | Elementul nu apare, nu ocupă spațiu. |
| flex | Activează layout flexbox, pentru poziționare flexibilă. |
| grid | Activează layout grid, pentru design cu grilă. |
| inline-flex | Ca flex, dar inline. |
| inline-grid | Ca grid, dar inline. |
| list-item | Aparține elementelor de listă (<li>). |
| table, table-row, table-cell, … | Modelează elemente de tabel. |
Controlul poziției unui element pe pagină.
.box {
position: absolute; /* poziționare absolută față de cel mai apropiat părinte cu position: relative */
top: 20px; /* distanța de sus de 20px */
right: 10px; /* distanța de dreapta de 10px */
bottom: 0; /* distanța de jos 0 */
left: 50px; /* distanța de stânga 50px */
}
| Valori posibile | Explicație |
| static | Valoarea implicită, elementul nu este poziționat special. |
| relative | Poziționează elementul față de poziția sa normală, top/right/bottom/left mutându-l față de poziția inițială. |
| absolute | Poziționează față de cel mai apropiat părinte cu position diferit de static. |
| fixed | Fixează elementul în poziție față de viewport (ecran, nu se deplasează la scroll). |
| sticky | Îmbină relative și fixed, devine fix în momentul în care atinge o poziție de scroll specificată. |
Observație: top, right, bottom, left funcționează doar dacă position este setat la relative, absolute, fixed, sau sticky.
| Valori posibile | Explicație |
| auto | Valoarea implicită, poziționarea se face automat. |
| px, em, %, vh, vw etc. | Distanța față de marginea corespunzătoare, depinde de poziționare și context. |
Controlul supra-afișării elementelor (care element apare deasupra).
.header {
position: absolute;
z-index: 10; /* elementul va fi deasupra celor cu z-index mai mic sau fără z-index */
}
.popup {
position: absolute;
z-index: 20; /* supra-afișează header-ul dacă se suprapun */
}
Se folosește doar dacă position e relative, absolute, fixed, sau sticky.
Gestionează ce se întâmplă când conținutul depășește dimensiunile elementului.
div {
width: 200px;
height: 150px;
overflow: auto; /* apar bare de scroll dacă e nevoie */
overflow: hidden; /* taie ce depășește */
overflow: visible; /* permit conținutului să depășească (implicit) */
overflow: scroll; /* întotdeauna arată bara de scroll */
}
| Valori posibile | Explicație |
| visible | Conținutul depășit este vizibil, nu se taie. |
| hidden | Se taie tot ce depășește dimensiunile elementului. |
| scroll | Bară de scroll mereu prezentată, chiar dacă nu e nevoie. |
| auto | Bara de scroll apare doar dacă e nevoie (dacă există conținut în plus). |
Transformă elementul într-un container flex, activând layout-ul flexibil pentru elementele sale copil.
.container {
display: flex; /*sau inline-flex*/
}
Aliniaza elementele flex pe axa principală (orizontală în mod implicit).
| Valori posibile | Explicație | Exemplu |
| flex-start | Aliniament la început (stânga) | justify-content: flex-start; (default) |
| center | Centrare | justify-content: center; |
| flex-end | Aliniament la sfârșit (dreapta) | justify-content: flex-end; |
| space-between | Spațiere uniformă între elemente | justify-content: space-between; |
| space-around | Spațiere egală în jurul fiecărui element | justify-content: space-around; |
| space-evenly | Spațiere egală între și în jurul elementelor | justify-content: space-evenly; |
Aliniaza elementele pe axa secundară (verticală dacă flex-direction este row).
| Valori posibile | Explicație | Exemplu |
| stretch (implicit) | Se întind pentru a umple containerul | align-items: stretch; |
| flex-start | Aliniere la început (sus) | align-items: flex-start; |
| center | Centrare verticală | align-items: center; |
| flex-end | Aliniere la sfârșit (jos) | align-items: flex-end; |
| baseline | Se aliniază după linia de bază a textului | align-items: baseline; |
Definește direcția principală a flexului (axele principale).
| Valori posibile | Explicație | Exemplu |
| row (default) | Orizontal, de la stânga la dreapta | flex-direction: row; |
| row-reverse | Orizontal, de la dreapta la stânga | flex-direction: row-reverse; |
| column | Vertical, de sus în jos | flex-direction: column; |
| column-reverse | Vertical, de jos în sus | flex-direction: column-reverse; |
.container {
display: flex;
justify-content: space-between;
align-items: center;
flex-direction: row; /* sau column, după nevoie */
}
Permite modificarea vizuală a elementului, cum ar fi rotirea, scalarea sau translatarea (migrarea).
| Valori comune și exemplu | Explicație | Exemplu CSS |
| rotate(45deg) | Rotirea elementului cu 45 grade | transform: rotate(45deg); |
| scale(1.5) | Mărirea elementului cu 1.5 ori | transform: scale(1.5); |
| translateX(50px) | Mutarea elementului pe axa X cu 50px | transform: translateX(50px); |
| skewX(20deg) | Pendurare (înclinare) pe axa X | transform: skewX(20deg); |
Permite ca schimbările proprietăților CSS să fie animate lin, pe durata specificată.
| Valori | Explicații |
| transition: all 0.3s ease; | Toate proprietățile se vor schimba în 0.3 secunde cu efect easing. |
| transition: background-color 0.5s; | Doar culoarea de fundal se va schimba în 0.5 secunde. |
| transition: transform 0.2s ease-in-out; | Transformările se vor anima în 0.2 secunde. |
Permite crearea de animații complexe și repetabile, definite in CSS.
| Proprietăți importante | Explicație | Exemplu CSS |
keyframes | Definirea pașilor animației | keyframes pulse { … } |
||
| animation-name | Se specifică numele animației definit în @keyframes | animation-name: pulse; |
| animation-duration | Durata completă a animației | animation-duration: 2s; |
| animation-iteration-count | Cât de multe ori se repetă animația (infinite, de ex.) | animation-iteration-count: infinite; |
| animation-timing-function | Efectul de temporizare (ease, linear, ease-in, ease-out) | animation-timing-function: ease-in-out; |
Exemplu complet:
.box {
width: 100px;
height: 100px;
background-color: red;
/* Transformare la hover cu animație */
transition: transform 0.3s ease;
}
.box:hover {
transform: scale(1.5) rotate(20deg);
}
/* Animație */
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
.animated-box {
width: 100px;
height: 100px;
background-color: blue;
animation: pulse 2s infinite;
}
Controlează transparența elementului.
| Valori posibile | Explicație | Exemplu CSS |
| 1 (implicit) | Opacitate totală, element complet vizibilă | opacity: 1; |
| 0 | Total transparent, element invizibil | opacity: 0; |
| 0.5 | Semitransparent | opacity: 0.5; |
| 0.1 | Aproape invizibil | opacity: 0.1; |
Controlează dacă elementul este vizibil sau invizibil, dar păstrează spațiul.
| Valori posibile | Explicație | Exemplu CSS |
| visible | Elementul se afișează normal | visibility: visible; |
| hidden | Elementul devine invizibil, dar ocupă spațiu | visibility: hidden; |
| collapse | Folosit în tabele pentru a ascunde rânduri/coloane | visibility: collapse; |
Schimbă forma cursorului atunci când treci peste element.
| Valori posibile | Explicație | Exemplu CSS |
| default | Cursorul implicit (mână normală) | cursor: default; |
| pointer | Mâna, indicând link sau element clicabil | cursor: pointer; |
| wait | Cursor în așteptare (mână în cerc) | cursor: wait; |
| crosshair | Cruce | cursor: crosshair; |
| text | Se afișează cursor pentru text | cursor: text; |
4. box-shadow
Adaugă o umbră în jurul elementului.
| Valori | Explicație | Exemplu CSS |
| none | Fără umbră | box-shadow: none; |
| [x-offset] [y-offset] [blur-radius] [color] | Umbră simplă | box-shadow: 2px 4px 8px rgba(0,0,0,0.3); |
Exemplu de box-shadow:
.box {
width: 200px;
height: 100px;
background-color: #eee;
box-shadow: 4px 4px 10px rgba(0,0,0,0.3);
} Există numeroase probleme cu cifrele unui număr și multe dintre ele se pot rezolva cu ajutorul unei funcții – chiar recursive:
Pentru realizarea unei funcții recursive, care determină rezultatul cerut, folosim un algoritm de forma următoare:
Desigur, algoritmul de mai sus trebuie adaptat la specificul problemei, dar în majoritatea situațiilor el este de acest tip!
Pentru a determina suma cifrelor unui număr procedăm astfel:
int sumcif(int n)0 (n==0). În acest caz rezultatul este 0;n>0, determinăm rezultatul pentru numărul fără ultima cifră: S = sumcif(n/10);S + n % 10 – suma cifrelor numărului fără ultima cifră, adunată cu ultima cifră a lui n.Puse împreună, obținem:
int sumcif(int n)
{
if(n == 0)
return 0;
else
{
int S = sumcif(n/10);
return S + n%10;
}
}
Funcția de mai sus este corectă, dând rezultatul valid pentru orice valoarea număr natural a paramatrului (valoare care se încadrează in tipul int, bineînțeles). Pe de altă parte, dacă vom scrie o funție pe același model pentru numărul de cifre, am obține:
int nrcif(int n)
{
if(n == 0)
return 0;
else
{
int S = nrcif(n/10);
return S + 1;
}
}
Dar funcția de mai sus este corectă numai pentru n>0. Apelul nrcif(0) dă rezultatul 0 – greșit, deoarece numărul zero conține 1 cifră.
Condiția n == 0 poate fi adevărată în două situații, pentru care funcția trebuie să returneze valori diferite:
n devine 0 în urma autoapelurilor, funcția trebuie să returneze 0 – suntem în situația în care avem un număr “fără cifre”!n este zero în apelul principal, funcția trebuie să returneze 1 – ne interesează efectiv câte cifre are 0 – are o cifră.La apelul funcției nu putem știi în ce situație ne aflăm, așa că nu putem stabili valoarea care trebuie returnată!
Soluția este simplă: considerăm cazul particular când numărul are o cifră (n<0), nu când este egal cu 0. Funcția pentru numărul de cifre devine:
int nrcif(int n)
{
if(n < 10)
return 1;
else
{
int S = nrcif(n/10);
return S + 1;
}
}
Pentru funcțiile recursive care prelucrează cifrele unui număr (n) considerăm cazul particular când numărul are o singură cifră (n<10), nu când numărul este zero (n==0)!
Last updated: September 06, 2023
This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.
We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy. This Privacy Policy has been created with the help of the Free Privacy Policy Generator.
The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.
For the purposes of this Privacy Policy:
While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:
Usage Data is collected automatically when using the Service.
Usage Data may include information such as Your Device’s Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.
When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.
We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.
We use Cookies and similar tracking technologies to track the activity on Our Service and store certain information. Tracking technologies used are beacons, tags, and scripts to collect and track information and to improve and analyze Our Service. The technologies We use may include:
Cookies can be "Persistent" or "Session" Cookies. Persistent Cookies remain on Your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close Your web browser. Learn more about cookies on the Free Privacy Policy website article.
We use both Session and Persistent Cookies for the purposes set out below:
Necessary / Essential Cookies
Cookies Policy / Notice Acceptance Cookies
Functionality Cookies
For more information about the cookies we use and your choices regarding cookies, please visit our Cookies Policy or the Cookies section of our Privacy Policy.
The Company may use Personal Data for the following purposes:
The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.
The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.
Your information, including Personal Data, is processed at the Company’s operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.
Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.
The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.
You have the right to delete or request that We assist in deleting the Personal Data that We have collected about You.
Our Service may give You the ability to delete certain information about You from within the Service.
You may update, amend, or delete Your information at any time by signing in to Your Account, if you have one, and visiting the account settings section that allows you to manage Your personal information. You may also contact Us to request access to, correct, or delete any personal information that You have provided to Us.
Please note, however, that We may need to retain certain information when we have a legal obligation or lawful basis to do so.
If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.
Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).
The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:
The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.
Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.
If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent’s consent before We collect and use that information.
Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party’s site. We strongly advise You to review the Privacy Policy of every site You visit.
We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.
We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.
We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the "Last updated" date at the top of this Privacy Policy.
You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.
If you have any questions about this Privacy Policy, You can contact us:
La concursul Mate Info UBB, ediția 2021 a fost dat următorul exercițiu:
Fie \(b_nb_{n-1}…b_0\) reprezentarea binară a numărului natural \(B\), \(2021 ≤ B ≤ 2021^{2021}\). Care dintre următoarele afirmații sunt adevărate?
A. Dacă valoarea expresiei \(b_0-b_1+b_2-b_3+…..+(-1)^n *b_n\) este zero, atunci \(B\) este divizibil cu \(3\)
B. Dacă valoarea expresiei \(b_0-b_1+b_2-b_3+…..+(-1)^n *b_n\) este divizibilă cu \(3\), atunci \(B\) este divizibil cu \(3\)
C. \(B\) este divizibil cu \(3\) dacă suma cifrelor binare este divizibilă cu \(3\), dar nu cu \(9\)
D. Dacă \(B\) este divizibil cu \(3\), atunci valoarea expresiei \(b_0-b_1+b_2-b_3+…..+(-1)^n *b_n\) este divizibilă cu \(3\)
Răspunsul corect este: A, B, D.
Varianta C. se elimină imediat, deoarece reprezentarea binară a lui 3 este 11, iar suma cifrelor binare este 2, nedivizibil cu 3.
Pentru a demonstra că afirmațiile A., B. și D. sunt adevărate vom demonstra următoarea afirmație, mai generală.
Teoremă: Fie \(N\) un număr natural a cărui reprezentare în baza \(B\) este \(b_nb_{n-1}…b_0\). Numărul \(N\) este divizibil cu \(B+1\) dacă și numai dacă expresia \(E = b_0-b_1+b_2-b_3+…..+(-1)^n *b_n\) este divizibilă \(B+1\).
Pentru a demonstra teorema de mai sus, vom demonstra mai întâi următoarea lemă:
Lemă: Fie \(P\) un număr natural. Atunci \(P^{2k}\) este de forma \(X \cdot (P+1)+1\), iar \(P^{2k+1}\) este de forma \(Y \cdot (P+1)-1\)
Demonstrația lemei se face prin inducție. Mai întâi să observăm că \(P^{0} = 1 = 0 \cdot (P+1) + 1\), iar \(P^{1} = P = 1 \cdot (P+1) – 1\).
Dacă \(P^{2k} = X \cdot (P+1)+1\), atunci \(P^{2k+1} = P \cdot P^{2p} \\= P \cdot (X \cdot (P+1)+1) \\= P \cdot X \cdot (P+1)+P \\= P \cdot X \cdot (P+1)+P + 1 – 1 \\= (P \cdot X+1)\cdot(P+1)-1 \\= Y \cdot (P+1) -1\)
Similar, dacă \(P^{2k+1} = Y \cdot (P+1)-1\), atunci \(P^{2k+2} = P \cdot P^{2k+1} \\= P \cdot (Y \cdot (P+1) -1) \\= P \cdot Y \cdot (P + 1) – P \\= P \cdot Y \cdot (P + 1) – P – 1 + 1 \\= P \cdot Y \cdot (P + 1) – (P + 1) + 1 \\= (P \cdot Y -1) \cdot (P + 1) + 1 \\= X \cdot (P+1) + 1\)
Demonstrația teoremei Dacă \(b_nb_{n-1}…b_0\) este reprezentarea în baza \(B\) a lui \(N\), atunci
$$N=b_0 \cdot B^0 + b_1 \cdot B^1 + b_2 \cdot B^2 + b_3 \cdot B^3 + … + b_n \cdot B^n$$
Deoarece puterile lui \(B\) sunt de forma precizată în lemă, obținem:
$$\begin{aligned} N &= b_0 \cdot ((B+1) \cdot f_0 + 1) + b_1 \cdot ((B+1) \cdot f_1 – 1) + b_2 \cdot ((B+1) \cdot f_2 + 1) + b_3 \cdot ((B+1) \cdot f_3 – 1) + \cdots + b_n \cdot ((B+1) \cdot f_n + (-1)^n) \\
& = ((B+1) \cdot b_0 \cdot f_0 + b_0) + ((B+1) \cdot b_1 \cdot f_1 – b_1) + ((B+1) \cdot b_2 \cdot f_2 + b_2) + ((B+1) \cdot b_3 \cdot f_3 – b_3) + \cdots + ((B+1) \cdot b_n \cdot f_n + (-1)^n \cdot b_n)\\
& = (B+1) \cdot b_0 \cdot f_0 + (B+1) \cdot b_1 \cdot f_1 + (B+1) \cdot b_2 \cdot f_2 + (B+1) \cdot b_3 \cdot f_3 + \cdots + (B+1) \cdot b_n \cdot f_n + b_0 – b_1 + b_2 – b_3 + \cdots + (-1)^n \cdot b_n\\
& = (B+1) \cdot ( b_0 \cdot f_0 + \cdot f_1 + b_2 \cdot f_2 + \cdot b_3 \cdot f_3 + \cdots + \cdot b_n \cdot f_n) + b_0 – b_1 + b_2 – b_3 + \cdots + (-1)^n \cdot b_n\\
& = (B+1) \cdot M + b_0 – b_1 + b_2 – b_3 + \cdots + (-1)^n \cdot b_n\\
\end{aligned}$$
Deoarece \((B+1) \cdot M\) este divizibil cu \(B+1\), deducem că \(N\) este divizibil cu \(B+1\) dacă și numai dacă \(b_0 – b_1 + b_2 – b_3 + \cdots + (-1)^n \cdot b_n\) este divizibil cu \(B+1\)!
Observații:
Exercițiul de mai sus este un caz particular al teoremei, în care \(B = 2\).
Expresia \(E\) poate fi scrisă și \(E = (b_0 + b_2 + …) – (b_1 + b_3 + …)\) – diferența dintre suma cifrelor de rang par și suma cifrelor de rang impar. Dacă \(B=10\), proprietatea de mai sus este “Criteriul de divizibilitate cu 11”.
Acest articol conține o listă cu subiecte date la examenul de bacalaureat, clasificate în funcție de problema ce presupune analiza algoritmilor pseudocod. Lista poate fi filtrată după an, categoria problemei și tipul structurii repetitive utilizate.
| Structura repetitivă | Categorie | An | Link vechi | URL |
|---|---|---|---|---|
| Cât timp | Cifre | 2025 | 2025, toamna | /resurse/9dc152/examene/2025/E_D_Informatica_2025_sp_MI_C_var_04_LRO.pdf |
| Cât timp | Divizibilitate | 2025 | 2025, vara, rezervă | /resurse/9dc152/examene/2025/E_d_Informatica_2025_sp_MI_C_var_07_LRO.pdf |
| Repetă | Diverse | 2025 | 2025, vara | /resurse/9dc152/examene/2025/E_d_Informatica_2025_sp_MI_C_var_01_LRO.pdf |
| Pentru descrescător | Cifre | 2025 | 2025, sesiunea specială | /resurse/9dc152/examene/2025/E_d_Informatica_2025_sp_MI_C_var_06_LRO.pdf |
| Pentru descrescător | Afișare valori | 2025 | 2025, simulare | /resurse/9dc152/examene/2025/E_d_Informatica_2025_sp_MI_C_var_Simulare_LRO.pdf |
| Pentru descrescător | Divizibilitate | 2025 | 2025, model | /resurse/9dc152/examene/2025/E_d_informatica_2025_sp_MI_C_var_model.pdf |
| Cât timp | Cifre | 2024 | 2024, toamna | /resurse/9dc152/examene/2024/E_d_Informatica_2024_sp_MI_C_var_08_LRO.pdf |
| Pentru | Diverse | 2024 | 2024, vara | /resurse/9dc152/examene/2024/E_d_Informatica_2024_sp_MI_C_var_03_LRO.pdf |
| Cât timp | Divizibilitate | 2024 | 2024, sesiunea specială | /resurse/9dc152/examene/2024/E_d_Informatica_2024_sp_MI_C_var_04_LRO.pdf |
| Cât timp | Divizibilitate | 2024 | 2024, simulare | /resurse/9dc152/examene/2024/sim/E_d_Informatica_2024_MI_C_var_simulare_LRO.pdf |
| Cât timp | Cifre | 2024 | 2024, model | /resurse/9dc152/examene/2024/E_D_Informatica_2024_sp_MI_C_var_model.pdf |
| Cât timp | Cifre | 2023 | 2023, toamna | /resurse/9dc152/examene/2023/E_d_Informatica_2023_sp_MI_C_var_07_LRO.pdf |
| Cât timp | Cifre | 2023 | 2023, vara | /resurse/9dc152/examene/2023/E_d_Informatica_2023_sp_MI_C_var_05_LRO.pdf |
| Pentru | Afișare valori | 2023 | 2023, sesiunea specială | /resurse/9dc152/examene/2023/E_d_Informatica_2023_sp_MI_C_var_06_LRO.pdf |
| Repetă | Cifre | 2023 | 2023, simulare | /resurse/9dc152/examene/2023/E_d_Informatica_2023_sp_MI_C_var_simulare_LRO.pdf |
| Cât timp | Divizibilitate | 2022 | 2022, toamna | https://www.pbinfo.ro/resurse/9dc152/examene/2022/E_d_informatica_2022_sp_MI_C_var_05_LRO.pdf |
| Cât timp | Divizibilitate | 2022 | 2022, vara | https://www.pbinfo.ro/resurse/9dc152/examene/2022/E_d_informatica_2022_sp_MI_C_var_01_LRO.pdf |
| Repetă | Cifre, Divizibilitate | 2022 | 2022, sesiunea specială | https://www.pbinfo.ro/resurse/9dc152/examene/2022/E_d_informatica_2022_sp_MI_C_var_04_LRO.pdf |
| Cât timp | Cifre | 2022 | 2022, simulare | https://www.pbinfo.ro/resurse/9dc152/examene/2022/E_d_informatica_2022_sp_MI_C_var_simulare_LRO.pdf |
| Pentru | Divizibilitate | 2021 | 2021, toamna | https://www.pbinfo.ro/resurse/9dc152/examene/2021/august/E_d_Informatica_2021_sp_MI_C_var_04_LRO.pdf |
| Pentru descrescător | Afișare valori | 2021 | 2021, vara | https://www.pbinfo.ro/resurse/9dc152/examene/2021/iunie-iulie/E_d_Informatica_2021_sp_MI_C_var_01_LRO.pdf |
| Cât timp | Afișări de caractere | 2021 | 2021, sesiunea specială | https://www.pbinfo.ro/resurse/9dc152/examene/2021/ses_speciala/E_d_Informatica_2021_sp_MI_C_var_07.pdf |
| Repetă | Cifre | 2021 | 2021, simulare | https://www.pbinfo.ro/resurse/9dc152/examene/2021/simulare/E_d_Informatica_2021_sp_MI_C_var_Simulare_LRO.pdf |
| Pentru | Afișare valori | 2021 | 2021, Test antrenament 12 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_12.pdf |
| Cât timp | Afișări de caractere | 2021 | 2021, Test antrenament 11 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_11.pdf |
| Cât timp | Afișări de caractere | 2021 | 2021, Test antrenament 10 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_10.pdf |
| Pentru | Afișări de caractere | 2021 | 2021, Test antrenament 9 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_09.pdf |
| Pentru | Calcul expresie | 2021 | 2021, Test antrenament 8 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_08.pdf |
| Cât timp | Cifre | 2021 | 2021, Test antrenament 7 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_07.pdf |
| Cât timp | Cifre | 2021 | 2021, Test antrenament 6 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_06.pdf |
| Repetă | Cifre | 2021 | 2021, Test antrenament 5 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_05.pdf |
| Cât timp | Cifre | 2021 | 2021, Test antrenament 4 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_04.pdf |
| Cât timp | Cifre | 2021 | 2021, Test antrenament 3 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_03.pdf |
| Cât timp | Cifre | 2021 | 2021, Test antrenament 2 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_02.pdf |
| Repetă | Cifre | 2021 | 2021, Test antrenament 1 | https://www.pbinfo.ro/resurse/9dc152/examene/2021/antrenament/E_d_Informatica_2021_sp_MI_C_Test_01.pdf |
| Repetă | Cifre | 2020 | 2020, toamna | https://www.pbinfo.ro/resurse/9dc152/examene/2020/E_d_Informatica_2020_sp_MI_C_var_05_LRO.pdf |
| Repetă | Cifre | 2020 | 2020, vara | https://www.pbinfo.ro/resurse/9dc152/examene/2020/E_d_Informatica_2020_sp_MI_C_var_06_LRO.pdf |
| Pentru | Cifre | 2020 | 2020, sesiunea specială COVID | https://www.pbinfo.ro/resurse/9dc152/examene/2020/E_d_Informatica_2020_sp_MI_C_var_02_LRO.pdf |
| Cât timp, Pentru | Cifre | 2020 | 2020, test antrenament 1 – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_01.pdf |
| Repetă | Cifre | 2020 | 2020, test antrenament 2 – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_02.pdf |
| Repetă | Cifre | 2020 | 2020, test antrenament 3 – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_03.pdf |
| Cât timp, Repetă | Cifre | 2020 | 2020, test antrenament 4 – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_04.pdf |
| Cât timp | Divizibilitate | 2020 | 2020, test antrenament 5 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_05.pdf |
| Cât timp | Diverse | 2020 | 2020, test antrenament 6 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_06.pdf |
| Cât timp | Cifre | 2020 | 2020, test antrenament 7 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_07.pdf |
| Repetă | Cifre | 2020 | 2020, test antrenament 8 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_08.pdf |
| Pentru | Afișare valori | 2020 | 2020, test antrenament 9 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_09.pdf |
| Repetă | Diverse | 2020 | 2020, test antrenament 10 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_10.pdf |
| Repetă | Cifre | 2020 | 2020, test antrenament 11 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_11.pdf |
| Cât timp | Cifre | 2020 | 2020, test antrenament 12 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_12.pdf |
| Cât timp | Cifre, Citiri succesive | 2020 | 2020, test antrenament 13 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_13.pdf |
| Repetă | Cifre | 2020 | 2020, test antrenament 14 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_14.pdf |
| Pentru combinat | Diverse | 2020 | 2020, test antrenament 15 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_15.pdf |
| Repetă | Cifre | 2020 | 2020, test antrenament 16 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_16.pdf |
| Cât timp | Diverse | 2020 | 2020, test antrenament 17 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_17.pdf |
| Pentru combinat | Afișare valori | 2020 | 2020, test antrenament 18 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/1-18/E_d_Informatica_2020_sp_MI_C_var_test_18.pdf |
| Cât timp | Cifre | 2020 | 2020, test antrenament 19 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/19-20/E_d_Informatica_2020_sp_MI_C_var_test_19.pdf |
| Cât timp | Divizibilitate | 2020 | 2020, test antrenament 20 | https://www.pbinfo.ro/resurse/9dc152/examene/2020/19-20/E_d_Informatica_2020_sp_MI_C_var_test_20.pdf |
| Cât timp | Cifre | 2019 | 2019, toamna – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2019/2019-august-septembrie/E_d_Informatica_2019_sp_MI_C_var_02_LRO.pdf |
| Cât timp | Divizibilitate | 2019 | 2019, vara – divizibilitate | https://www.pbinfo.ro/resurse/9dc152/examene/2019/2019-iunie-iulie/E_d_Informatica_2019_sp_SN_C_var_04_LRO.pdf |
| Cât timp | Cifre | 2019 | 2019, sesiunea specială – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2019/2019-speciala/E_d_Informatica_2019_sp_MI_C_var_01_LRO.pdf |
| Cât timp | Cifre | 2019 | 2019, simulare martie – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2019/simulare/E_d_Informatica_2019_sp_MI_C_var_simulare_LRO.pdf |
| Cât timp | Diverse | 2018 | 2018, vara, subiect rezervă – diverse | https://www.pbinfo.ro/resurse/9dc152/examene/2018-iunie/E_d_Informatica_C_sp_SN_2018_var_08_LRO.pdf |
| Cât timp | Divizibilitate | 2018 | 2018, sesiunea specială – divizibilitate | https://www.pbinfo.ro/resurse/9dc152/examene/2018-special/E_d_Informatica_C_sp_MI_2018_var_09_LRO.pdf |
| Repetă | Cifre | 2018 | 2018, toamna – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2018-iunie/E_d_Informatica_C_sp_SN_2018_var_08_LRO.pdf |
| Repetă, Pentru | Cifre | 2018 | 2018, vara – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2018-iunie/E_d_Informatica_C_sp_SN_2018_var_02_LRO.pdf |
| Cât timp | Citiri succesive | 2017 | 2017, toamna – citiri succesive | https://www.pbinfo.ro/resurse/9dc152/examene/2017-august/E_d_Informatica_C_sp_MI_2017_var_07_LRO.pdf |
| Pentru | Afișări de caractere | 2017 | 2017, vara | https://www.pbinfo.ro/resurse/9dc152/examene/2017-iunie/E_d_Informatica_C_sp_MI_2017_var_04_LRO.pdf |
| Pentru | Calcul expresie | 2017 | 2017, vara, rezervă – calcul expresie | https://www.pbinfo.ro/resurse/9dc152/examene/2017-iunie/E_d_Informatica_C_sp_MI_2017_var_05_LRO.pdf |
| Pentru, Cât timp | Divizibilitate | 2017 | 2017, sesiunea specială – divizibilitate | https://www.pbinfo.ro/resurse/9dc152/examene/2017-special/E_d_Informatica_C_sp_MI_2017_var_03_LRO.pdf |
| Cât timp | Divizibilitate | 2016 | 2016, vara – divizibilitate | https://www.pbinfo.ro/resurse/9dc152/examene/2016-iunie/E_d_informatica_C_sp_MI_2016_var_10_LRO.pdf |
| Cât timp | Cifre | 2016 | 2016, sesiunea specială – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2016-special/E_d_informatica_C_sp_MI_2016_var_04_LRO.pdf |
| Pentru | Divizibilitate | 2016 | 2016, toamna – divizibilitate | https://www.pbinfo.ro/resurse/9dc152/examene/2016-august/E_d_informatica_C_sp_MI_2016_var_09_LRO.pdf |
| Cât timp | Afișare valori | 2015 | 2015, toamna – afișare valori | https://www.pbinfo.ro/resurse/9dc152/examene/2015-august/E_d_informatica_C_sp_MI_2015_var_02_LRO.pdf |
| Cât timp | Divizibilitate | 2015 | 2015, vara – divizibilitate | https://www.pbinfo.ro/resurse/9dc152/examene/2015-iunie/E_d_informatica_C_sp_MI_2015_var_09_LRO.pdf |
| Cât timp | Simulare operații | 2015 | 2015, simulare bacalaureat – simulare operație | https://www.pbinfo.ro/resurse/9dc152/examene/2015-simulare-bac/E_d_informatica_C_sp_MI_2015_var_simulare_LRO.pdf |
| Pentru | Cifre | 2015 | 2015, sesiunea specială – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2015-special/E_d_informatica_C_sp_MI_2015_var_05_LRO.pdf |
| Cât timp | Cifre | 2014 | 2014, sesiunea specială – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2014/E_d_Informatica_C_sp_MI_2014_var_02_LRO.pdf |
| Cât timp | Divizibilitate | 2014 | 2014, vara – divizibilitate | https://www.pbinfo.ro/resurse/9dc152/examene/2014/E_d_Informatica_C_sp_MI_2014_var_04_LRO.pdf |
| Repetă | Fibonacci | 2014 | 2014, toamna – Fibonacci | https://www.pbinfo.ro/resurse/9dc152/examene/2014/E_d_Informatica_C_sp_MI_2014_var_10_LRO.pdf |
| Pentru | Cifre | 2013 | 2013, vara – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2013/E_d_Informatica_C_sp_MI_var_02_LRO.pdf |
| Pentru | Cifre | 2013 | 2013, vara – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2013/E_d_Informatica_C_sp_MI_var_06_LRO.pdf |
| Cât timp | Cifre | 2012 | 2012, vara – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2012/E_d_Informatica_C_sp_MI_var_01_LRO.pdf |
| Pentru | Calcul expresie | 2012 | 2012, toamna – calcul expresie | https://www.pbinfo.ro/resurse/9dc152/examene/2012/E_d_Informatica_C_sp_MI_var_04_LRO.pdf |
| Cât timp | Afișare valori | 2011 | 2011, vara – afișare valori | https://www.pbinfo.ro/resurse/9dc152/examene/2011/Proba_E_d_Informatica_C_sp_MI_var_09.pdf |
| Cât timp | Cifre | 2011 | 2011, toamna – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2011/Proba_E_d_Informatica_C_sp_MI_var_03.pdf |
| Repetă | Cifre | 2010 | 2010, vara – cifre | https://www.pbinfo.ro/resurse/9dc152/examene/2010/Proba_E_d_Informatica_C_sp_MI_INT_subiect_10.pdf |
| Pentru | Diverse | 2010 | 2010, toamna – diverse | https://www.pbinfo.ro/resurse/9dc152/examene/2010/Proba_E_d_Informatica_C_sp_MI_INT_subiect_10.pdf |
| Cât timp | Cifre | 2009 | Varianta 1, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_001.pdf |
| Cât timp | Citiri succesive | 2009 | Varianta 2, 2009 – citiri succesive | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_002.pdf |
| Cât timp | Citiri succesive | 2009 | Varianta 3, 2009 – citiri succesive | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_003.pdf |
| Cât timp | Cifre | 2009 | Varianta 6, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_006.pdf |
| Cât timp | Cifre | 2009 | Varianta 8, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_008.pdf |
| Cât timp | Cifre | 2009 | Varianta 9, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_009.pdf |
| Cât timp | Cifre | 2009 | Varianta 10, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_010.pdf |
| Cât timp | Cifre | 2009 | Varianta 11, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_011.pdf |
| Cât timp | Cifre | 2009 | Varianta 12, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_012.pdf |
| Cât timp | Cifre | 2009 | Varianta 14, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_014.pdf |
| Cât timp | Afișări de caractere | 2009 | Varianta 17, 2009 – afișări de caractere | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_017.pdf |
| Cât timp | Afișări de caractere | 2009 | Varianta 18, 2009 – afișări de caractere | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_018.pdf |
| Cât timp | Cifre | 2009 | Varianta 20, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_020.pdf |
| Cât timp | Divizibilitate | 2009 | Varianta 24, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_024.pdf |
| Cât timp | Divizibilitate | 2009 | Varianta 25, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_025.pdf |
| Cât timp | Simulare operații | 2009 | Varianta 27, 2009 – simulare operație | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_027.pdf |
| Cât timp | Numere reale | 2009 | Varianta 28, 2009 – numere reale | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_028.pdf |
| Cât timp | Diverse | 2009 | Varianta 29, 2009 – diverse | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_029.pdf |
| Cât timp | Cifre | 2009 | Varianta 30, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_030.pdf |
| Cât timp | Simulare operații | 2009 | Varianta 31, 2009 – simulare operație | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_031.pdf |
| Cât timp | Afișare valori | 2009 | Varianta 32, 2009 – afișare valori | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_032.pdf |
| Cât timp | Cifre | 2009 | Varianta 34, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_034.pdf |
| Cât timp | Divizibilitate | 2009 | Varianta 35, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_035.pdf |
| Cât timp | Citiri succesive, Cifre | 2009 | Varianta 36, 2009 – citiri succesive, cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_036.pdf |
| Cât timp | Cifre | 2009 | Varianta 37, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_037.pdf |
| Cât timp | Cifre | 2009 | Varianta 39, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_039.pdf |
| Cât timp | Divizibilitate | 2009 | Varianta 40, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_040.pdf |
| Cât timp | Divizibilitate | 2009 | Varianta 41, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_041.pdf |
| Cât timp | Diverse | 2009 | Varianta 42, 2009 – diverse | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_042.pdf |
| Cât timp | Divizibilitate | 2009 | Varianta 43, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_043.pdf |
| Cât timp | Cifre | 2009 | Varianta 44, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_044.pdf |
| Cât timp | Diverse | 2009 | Varianta 45, 2009 – diverse | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_045.pdf |
| Cât timp | Cifre | 2009 | Varianta 46, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_046.pdf |
| Cât timp | Cifre | 2009 | Varianta 49, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_049.pdf |
| Cât timp | Cifre, Factorial | 2009 | Varianta 54, 2009 – cifre, factorial | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_054.pdf |
| Cât timp | Divizibilitate | 2009 | Varianta 57, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_057.pdf |
| Cât timp | Cifre | 2009 | Varianta 58, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_058.pdf |
| Cât timp | Cifre | 2009 | Varianta 60, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_060.pdf |
| Cât timp | Cifre | 2009 | Varianta 61, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_061.pdf |
| Cât timp | Cifre | 2009 | Varianta 67, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_067.pdf |
| Cât timp | Simulare operații | 2009 | Varianta 70, 2009 – simulare operații | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_070.pdf |
| Cât timp | Cifre | 2009 | Varianta 74, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_074.pdf |
| Cât timp | Divizibilitate | 2009 | Varianta 76, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_076.pdf |
| Cât timp | Citiri succesive | 2009 | Varianta 77, 2009 – citiri succesive | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_077.pdf |
| Cât timp | Citiri succesive | 2009 | Varianta 78, 2009 – citiri succesive | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_078.pdf |
| Cât timp | Divizibilitate | 2009 | Varianta 79, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_079.pdf |
| Cât timp | Cifre | 2009 | Varianta 80, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_080.pdf |
| Cât timp | Cifre | 2009 | Varianta 83, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_083.pdf |
| Cât timp | Cifre | 2009 | Varianta 84, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_084.pdf |
| Cât timp | Cifre | 2009 | Varianta 85, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_085.pdf |
| Cât timp | Divizibilitate | 2009 | Varianta 87, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_087.pdf |
| Cât timp | Cifre | 2009 | Varianta 88, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_088.pdf |
| Cât timp | Cifre | 2009 | Varianta 89, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_089.pdf |
| Cât timp | Afișare valori | 2009 | Varianta 90, 2009 – afișări valori | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_090.pdf |
| Cât timp | Calcul expresie | 2009 | Varianta 93, 2009 – calcul expresie | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_093.pdf |
| Cât timp | Cifre | 2009 | Varianta 94, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_094.pdf |
| Cât timp | Cifre | 2009 | Varianta 95, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_095.pdf |
| Cât timp | Simulare operații | 2009 | Varianta 98, 2009 – simulare operație | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_098.pdf |
| Cât timp | Cifre | 2009 | Varianta 100, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_100.pdf |
| Repetă | Simulare operație | 2009 | Varianta 21, 2009 – simulare operație | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_021.pdf |
| Repetă | Diverse | 2009 | Varianta 23, 2009 – diverse | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_023.pdf |
| Repetă | Cifre | 2009 | Varianta 47, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_047.pdf |
| Repetă | Cifre | 2009 | Varianta 51, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_051.pdf |
| Repetă | Cifre | 2009 | Varianta 53, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_053.pdf |
| Repetă | Cifre | 2009 | Varianta 56, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_056.pdf |
| Repetă | Cifre | 2009 | Varianta 59, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_059.pdf |
| Repetă | Cifre | 2009 | Varianta 65, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_065.pdf |
| Repetă | Citiri succesive | 2009 | Varianta 66, 2009 – citiri succesive | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_066.pdf |
| Repetă | Cifre | 2009 | Varianta 69, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_069.pdf |
| Repetă | Citiri succesive, Cifre | 2009 | Varianta 75, 2009 – citiri succesive, cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_075.pdf |
| Repetă | Numere reale | 2009 | Varianta 91, 2009 – numere reale | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_091.pdf |
| Repetă, Cât timp | Cifre | 2009 | Varianta 5, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_005.pdf |
| Repetă, Cât timp | Cifre | 2009 | Varianta 62, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_062.pdf |
| Pentru | Cifre | 2009 | Varianta 13, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_013.pdf |
| Pentru | Calcul expresie | 2009 | Varianta 15, 2009 – calcul de expresie | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_015.pdf |
| Pentru | Afișări de caractere | 2009 | Varianta 16, 2009 – afișări de caractere | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_016.pdf |
| Pentru | Cifre | 2009 | Varianta 19, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_019.pdf |
| Pentru | Divizibilitate | 2009 | Varianta 22, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_022.pdf |
| Pentru | Afișare valori | 2009 | Varianta 26, 2009 – afișare de valori | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_026.pdf |
| Pentru | Calcul expresie | 2009 | Varianta 33, 2009 – calcul expresie | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_033.pdf |
| Pentru | Cifre | 2009 | Varianta 48, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_048.pdf |
| Pentru | Cifre | 2009 | Varianta 50, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_050.pdf |
| Pentru | Zerouri | 2009 | Varianta 52, 2009 – zerouri | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_052.pdf |
| Pentru | Cifre | 2009 | Varianta 55, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_055.pdf |
| Pentru | Divizibilitate | 2009 | Varianta 63, 2009 – divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_063.pdf |
| Pentru | Afișare valori | 2009 | Varianta 64, 2009 – afișări de valori | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_064.pdf |
| Pentru | Citiri succesive, Divizibilitate | 2009 | Varianta 68, 2009 – citiri succesive, divizibilitate | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_068.pdf |
| Pentru | Cifre | 2009 | Varianta 71, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_071.pdf |
| Pentru | Afișări de caractere | 2009 | Varianta 72, 2009 – afișări caractere | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_072.pdf |
| Pentru | Diverse | 2009 | Varianta 73, 2009 – diverse | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_073.pdf |
| Pentru | Calcul expresie | 2009 | Varianta 81, 2009 – calcul expresie | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_081.pdf |
| Pentru | Citiri succesive, Cifre | 2009 | Varianta 82, 2009 – citiri succesive, cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_082.pdf |
| Pentru | Afișare valori | 2009 | Varianta 86, 2009 – afișări valori | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_086.pdf |
| Pentru | Citiri succesive | 2009 | Varianta 92, 2009 – citiri succesive | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_092.pdf |
| Pentru | Diverse | 2009 | Varianta 99, 2009 – diverse | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_099.pdf |
| Pentru descrescător | Afișare valori | 2009 | Varianta 4, 2009 – afișare valori | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_004.pdf |
| Pentru descrescător | Cifre | 2009 | Varianta 7, 2009 – cifre | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_007.pdf |
| Pentru combinat | Calcul expresie | 2009 | Varianta 38, 2009 – calcul expresii | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_038.pdf |
| Pentru combinat | Citiri succesive | 2009 | Varianta 96, 2009 – afișare valori | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_096.pdf |
| Pentru combinat | Afișare valori | 2009 | Varianta 97, 2009 – citiri succesive | http://bacinfo.cnlr.ro/subiecte-bac/2009/e_info_intensiv_c_si_097.pdf |
Citiți mai întâi Generarea aranjamentelor!
Consideram o mulțime cu A cu n elemente. Prin combinări de k elemente din A înțelegem submulțimile cu k elemente ale multimii A. Numărul acestor combinări este \(C_n^k = \frac{A_n^k}{P_k}\). Mai multe formule pentru calculul numărului de combinări pot fi găsite în acest articol.
Acest articol prezintă un algoritm backtracking pentru determinarea în ordine lexicografică a combinărilor de k elemente ale mulțimii A={1 , 2 , ... , n}, elemente dintr-o combinare fiind generate în ordine crescătoare. El poate fi adaptat pentru determinarea combinărilor de k elemente ale unei mulțimi oarecare de n elemente.
Deoarece în algoritmul recursiv general apare funcția Back() cu parametrul k, pentru a păstra notațiile din algoritm vom considera în continuare combinările de k elemente luate câte p.
Ca orice rezolvare cu algoritmul backtracking, începem prin a preciza semnificația vectorului soluție. Astfel, x[] reprezintă o combinare. În consecință, el va respecta următoarele condiții:
1 și n;p elemente, reprezintă o combinare completă, care urmează a fi afișată.Formal, exprimăm proprietățile de mai sus astfel:
Observăm (din nou) că în verificarea condițiilor interne intervine doar elementul x[k] (cel care este verificat) și elementele deja generate (x[1], x[2], … , x[k-1]).
Observăm că aceste condiții sunt cele de la generarea aranjamentelor, la care se adaugă condiția internă legată de ordinea elementelor din vector. În consecință, programul va fi cel de la aranjamente, cu completarea funcției OK().
#include <iostream>
using namespace std;
int x[10] , n , p;
void Afis(int k)
{
for(int j = 1 ; j <= k ; j ++)
cout << x[j] << " ";
cout << endl;
}
bool OK(int k){
for(int i = 1 ; i < k ; ++ i)
if(x[k] == x[i])
return false;
if(k > 1)
if(x[k] <= x[k-1])
return false;
return true;
}
bool Solutie(int k)
{
return k == p;
}
void back(int k){
for(int i = 1 ; i <= n ; ++ i)
{
x[k] = i;
if(OK(k))
if(Solutie(k))
Afis(k);
else
back(k + 1);
}
}
int main(){
cin >> n >> p;
back(1);
return 0;
}
Condițiile de mai sus pot fi îmbunătățite, făcând următoarele observații:
Cazul \(k = 1\) este unul special. Valorile pe care le poate lua sunt \(\left\{ 1 , 2 , 3 , \ldots \right\} \). Pentru a fi condițiile externe de mai sus corecte în în acest caz, este necesară inițializarea x[ 0 ] = 0, înaintea începerii generării.
#include <iostream>
using namespace std;
int x[10] , n , p;
void Afis(int k)
{
for(int j = 1 ; j <= k ; j ++)
cout << x[j] << " ";
cout << endl;
}
void back(int k){
for(int i = x[k-1] + 1 ; i <= n ; ++ i)
{
x[k] = i;
if(k == p)
Afis(k);
else
back(k + 1);
}
}
int main(){
cin >> n >> p;
x[0] = 0;
back(1);
return 0;
}
combinari combinari2 siruri SubmDiv cifre_c subimp2