5
1 I. Pricipiul lui Dirichlet (cutiei) Principiul lui Dirichlet (întâlnit şi sub denumirea de principiul cutiei) are următorul enunţ: Dacă avem m obiecte pe care vrem să le punem în n cutii, iar m>kn, k număr natural nenul, atunci va exista cel puţin o cutie care ce conţine k+1 obiecte. Aplicaţia 1. Fie a=(a 1 ,a 2 ,…,a n ) un vector cu componente întregi. Să se determine o secvenţă (a i ,…,a j ), cu proprietatea că a i +…+a j este un multiplu de n. Soluţie: Pentru a determina o secvenţă cu proprietatea din enunţ vom considera sumele: S 1 =a 1 S 2 =a 1 +a 2 . . . . . . . S i =a 1 +a 2 +…+a i . . . . . . . . . . . . S n =a 1 +a 2 +…+a n . Putem avea două cazuri: 1) există k cu S k multiplu de n, caz în care secvenţa căutată este a 1 ,…,a k ; 2) nu există sume care să fie divizibile cu n. În acest caz avem că toate sumele dau la împărţirea la n resturi ce fac parte din mulţimea 1,2,…,n-1. Cum sunt n sume şi n-1 resturi posibile, conform principiului lui Dirichlet obţinem că exită două sume S p şi S q ,(p<q) care la împărţirea la n dau acelaşi rest. Deci S q -S p este divizibilă cu n şi deci putem lua i=p+1 şi j=q. Aplicaţia 2. Se consideră un număr natural care are n cifre, toate nenule. Se cere să se determine un alt număr natural format doar din cifrele numărului iniţial (nu este obligatorie utilizarea tuturor cifrelor şi în plus se poate folosi şi cifra 0) şi care se divide la n. Exemplu: Pentru numarul 1111 o soluţie poate fi 1000 sau 1100. Soluţie: Fie A=a 1 a 2 …a n numărul dat. Considerăm numerele: a n , a n-1 a n , …, a 1 a 2 …a n . Acestea au resturile împărţirii la n în mulţimea {0, 1, …, n-1}. Dacă există un rest 0, atunci numărul respectiv este cel căutat. Dacă nu, avem de-a face cu n resturi din mulţimea {1, 2, …, n-1}, adică n-1 resturi şi conform principiului cutiei vor exista două resturi egale, deci două numere B şi C care au acelaşi rest la împărţirea cu n. Scădem aceste numere şi rezultatul este ceea ce ne interesează. Aplicaţia 3. Se dau n+2 numere naturale. Să se determine două numere dintre acestea cu proprietatea că au suma sau diferenţa divizibilă cu 2n. Exemplu: Pentru n=4 şi numerele 11 12 13 7 2 17 se poate afişa: 11 13 pentru că suma lor se divide cu 8. Soluţie: Se aplică principiul cutiei, considerând cutiile cu numerele de la 0 la n. În cutia cu numărul k se introduce acel număr a pentru care a+k sau a-k se divide prin 2n. Cum sunt n+1 cutii şi n+2 numere, vor exista două numere în aceeaşi cutie, adică numerele căutate. Aplicaţia 4. Fie n un număr întreg. Găsiţi un număr în baza 10 divizibil cu n şi format numai din cifre de 1 şi 0. Soluţie: Vom considera numerele 1, 11, 111, …, 11…1 (ultimul având n cifre de 1). Putem avea două situaţii: 1) Printre numerele anterioare există unul care este multiplu de n. Rezultă că acesta este numărul căutat. 2) Toate numerele anterioare dau la împărţirea cu n resturi nenule, adică 1, 2, …, n-1. Întrucât avem n numere şi n-1 resturi, conform principiului lui Dirichlet există două numere care dau acelaşi rest.

PrDirichlet

Embed Size (px)

DESCRIPTION

Probleme matematica

Citation preview

Page 1: PrDirichlet

1

I. Pricipiul lui Dirichlet (cutiei)

Principiul lui Dirichlet (întâlnit şi sub denumirea de principiul cutiei) are următorul enunţ:

Dacă avem m obiecte pe care vrem să le punem în n cutii, iar m>kn, k număr natural nenul, atunci va exista cel puţin o cutie care ce conţine k+1 obiecte. Aplicaţia 1. Fie a=(a1,a2,…,an) un vector cu componente întregi. Să se determine o secvenţă (a i,…,aj), cu proprietatea că ai+…+aj este un multiplu de n.

Soluţie:

Pentru a determina o secvenţă cu proprietatea din enunţ vom considera sumele: S1=a1

S2=a1+a2 . . . . . . .

Si=a1+a2+…+ai

. . . . . . . . . . . . Sn=a1+a2+…+an.

Putem avea două cazuri: 1) există k cu Sk multiplu de n, caz în care secvenţa căutată este a1,…,ak;

2) nu există sume care să fie divizibile cu n. În acest caz avem că toate sumele dau la

împărţirea la n resturi ce fac parte din mulţimea 1,2,…,n-1. Cum sunt n sume şi n-1 resturi posibile,

conform principiului lui Dirichlet obţinem că exită două sume Sp şi Sq,(p<q) care la împărţirea la n dau acelaşi rest. Deci Sq-Sp este divizibilă cu n şi deci putem lua i=p+1 şi j=q.

Aplicaţia 2. Se consideră un număr natural care are n cifre, toate nenule. Se cere să se determine un alt număr natural format doar din cifrele numărului iniţial (nu este obligatorie utilizarea tuturor cifrelor şi în plus se poate folosi şi cifra 0) şi care se divide la n. Exemplu:

Pentru numarul 1111 o soluţie poate fi 1000 sau 1100.

Soluţie: Fie A=a1a2…an numărul dat. Considerăm numerele:

an, an-1an, …, a1a2…an.

Acestea au resturile împărţirii la n în mulţimea {0, 1, …, n-1}. Dacă există un rest 0, atunci numărul respectiv este cel căutat. Dacă nu, avem de-a face cu n resturi din mulţimea {1, 2, …, n-1}, adică n-1 resturi

şi conform principiului cutiei vor exista două resturi egale, deci două numere B şi C care au acelaşi rest la împărţirea cu n. Scădem aceste numere şi rezultatul este ceea ce ne interesează.

Aplicaţia 3. Se dau n+2 numere naturale. Să se determine două numere dintre acestea cu proprietatea că au suma sau diferenţa divizibilă cu 2n. Exemplu: Pentru n=4 şi numerele 11 12 13 7 2 17

se poate afişa: 11 13 pentru că suma lor se divide cu 8.

Soluţie: Se aplică principiul cutiei, considerând cutiile cu numerele de la 0 la n. În cutia cu numărul k se introduce

acel număr a pentru care a+k sau a-k se divide prin 2n. Cum sunt n+1 cutii şi n+2 numere, vor exista două numere în aceeaşi cutie, adică numerele căutate.

Aplicaţia 4. Fie n un număr întreg. Găsiţi un număr în baza 10 divizibil cu n şi format numai din cifre de 1 şi 0. Soluţie:

Vom considera numerele 1, 11, 111, …, 11…1 (ultimul având n cifre de 1). Putem avea două situaţii: 1) Printre numerele anterioare există unul care este multiplu de n. Rezultă că acesta este numărul căutat.

2) Toate numerele anterioare dau la împărţirea cu n resturi nenule, adică 1, 2, …, n-1. Întrucât avem n

numere şi n-1 resturi, conform principiului lui Dirichlet există două numere care dau acelaşi rest.

Page 2: PrDirichlet

2

Obţinem astfel că diferenţa acestor două numere este numărul căutat (care este evident format din

cifrele 0 şi 1).

Aplicaţia 5. Se dau 2n+1 numere reale mai mari ca 1 şi mai mici ca 2n. Să se determine trei dintre ele care pot fi lungimile laturilor unui triunghi. Exemplu:

Pentru n=2 şi numerele:

1.7 2.9 3.88 1.4 2.55 se va afişa:

2.9 3.88 2.55

Soluţie:

Intervalul (1, 2n) poate fi partiţionat în n intervale:

(1, 2); 2, 22), 22, 23), . . ., 2n-1, 2n).

Conform Principiului lui Dirichlet, există un interval din cele n de mai sus ce conţine cel puţin trei din cele

2n+1 numere. Fie a1, a2, a3 aceste numere, situate ţn intervalul 2k, 2k+1), 0kn-1. Avem: 2ka12k+1,

2ka22k+1, 2k

a32k+1. Deci a32k+1=2k+2ka1+a2. Analog: a1a3+a2. a2a1+a3.

Aplicaţia 6. Se dau două numere naturale a şi b prime între ele. Să se determine nb, astfel ca an-1 să se dividă prin b. Exemplu:

Pentru a=2 şi b=5, avem: n=4.

Soluţie:

Din faptul că a şi b sunt prime între ele, rezultă că a, a2, …, ab nu se divid cu b. Atunci resturile ce se obţin

împărţind numere a, a2, …, ab la b sunt din mulţimea: 1,2, …, b-1. Din Principiul lui Dirichlet rezultă că

există k şi l (k>l), naturale nenule, k,lb, astfel ca ak şi al să dea acelaşi rest la împărţirea prin b. Rezultă

al(ak-l-1) se divide prin b şi cum al şi b sunt prime între ele (pentru că a şi b sunt prime între ele), obţinem că

ak-1- 1 se divide la b.

Aplicaţia 7. Se dă o mulţime A={a[1],a[2],…,a[n]}, cu elemente numere reale (1n5000). Se cere să se determine o submulţime B a lui A, nevidă cu proprietatea că partea fracţionară a sumei elementelor lui B este strict mai mică decât 1/n. Date de intrare:

În fişierul text MULTIME.IN se află pe prima linie n, iar pe a doua linie elementele lui A separate între ele prin câte un spaţiu.

Date de ieşire:

În fişierul text MULTIME.OUT se va scrie pe prima linie elementele lui B separate prin câte un spaţiu. Exemplu:

MULTIME.IN 5

2.3 22.5 5.23 7.71 55.6

MULTIME.OUT 22.5 55.6

Soluţie:

Se construieşte vectorul s cu componentele:

s[1]=partea fracţionară din a[1]; s[2]=partea fracţionară din a[1]+a[2];

… s[n]=partea fracţionară din a[1]+a[2]+…+a[n].

Intervalul [0,1) se partiţionează folosind intervalele (0, 1/n], (1/n, 2/n],…, ((n-1)/n, n/n]. Dacă există i cu s[i] în intervalul [0,1/n), atunci B={a[1],…,a[i]}, altfel conform principiului lui Dirichlet

există i şi j cu s[i],s[j](0,1/n], atunci B={a[i+1],…,a[j]}.

Aplicaţia 8. Se dă o mulţime A de n+1 elemente numere naturale nenule, mai mici sau egale cu 2n. Să se determine două submulţimi X şi Y, incluse în A, astfel încât produsul elementelor dintr-o submulţime să fie divizibil cu produsul elementelor din cealaltă submulţime. Date de intrare:

Page 3: PrDirichlet

3

În fişierul text MULTIME.IN se află pe prima linie n, iar pe linia următoare cele n+1 elemente ale mulţimii A

(separate între ele prin câte un spaţiu).

Date de ieşire: În fişierul text MULTIME.OUT se va scrie pe prima linie elemetele multimii X, iar pe linia următoare

elementele mulţimii Y. Exemplu:

MULTIME.IN

4 2 3 4 5 7

MULTIME.OUT 2

4

Soluţie:

Fie a1, a2, …, an+1 cele n+1 numere naturale. După o prealabilă ordonare şi renumerotare avem:

1a1a2…an+12n.

Orice număr natural se poate scrie sub forma 2xy, unde x este un număr natural, iar y este un număr natural

impar. Deci a1=2x(1)y(1), a2=2x(2)y(2), …, an+1=2x(n+1)y(n+1).

Dar între 1 şi 2n există exact n numere impare şi deci, conform principiului cutiei, două dintre numerele y(1), y(2), …, y(n+1) sunt egale. Fie acestea y(i) şi y(j) cu i<j. Atunci numărul ai=2x(i)y(i) divide pe aj=2x(j)y(j).

Aplicaţia 9. Se dau n+1 numere naturale diferite şi mai mici decât 2n. Se cere să se determine trei numere dintre cele date care au proprietatea că unul dintre ele este egal cu suma celorlalte două. Date de intrare:

În fişierul text NUMERE.IN se află pe prima linie n, iar pe linia următoare cele n+1 numere.

Date de ieşire: În fişierul text NUMERE.OUT se va scrie pe prima linie c ele trei numere separate între ele prin câte un

spaţiu. Exemplu:

NUMERE.IN

4 2 3 4 5 7

NUMERE.OUT 2 3 5

Soluţie:

Fie a1, a2, …, an, an+1 cele n+1 numere naturale cu proprietatea că ai2n, pentru 1in+1. Vom ordona

elementele din şirul de numere astfel încât să obţinem a1<a2< …<an<an+1.

Atunci an+1-a1, an+1-a2, …, an+1-an sunt numere naturale mai mici decât 2n. Avem astfel în total (cu cele iniţiale) n+1+n=2n+1 numere. Cum ele sunt mai mici decât 2n, conform principiului lui Dirichlet, există douş

numere care vor coincide:

ai=an+1-aj, 1in+1, 1jn

Deci an+1=ai+aj.

Aplicaţia 10. Se n puncte distincte numerotate cu 1, 2, .., n. Unele dintre aceste puncte sunt unite prin segmente (fiecare punct este capătul cel puţin unui segment). Se cere să se determine două puncte printre cele date cu proprietatea că din ele pleacă acelaşi număr de segmente. Datele de intrare: În fişierul text PUNCTE.IN se află pe prima linie n, iar pe următoarele linii perechi de numere ce semnifică

capetele segmentelor. Datele de ieşire:

În fişierul text PUNCTE.OUT se va scrie pe prima linie doua puncte cu proprietatea căutată, precum şi numărul de segmente ce pleacă din aceste puncte.

Exemplu:

PUNCTE.IN 4

1 2 3 4

1 3

PUNCTE.OUT

Page 4: PrDirichlet

4

1 3

Soluţie: Dintr-un punct pot pleca maximum n-1 segmente şi minim 1 segment. Cum avem n puncte, conform

principilui cutiei rezultă că vor exita cel puţin două puncte din care pleacă acelaşi număr de segmente. Algoritmul pe care îl vom prezenta mai jos calculează pentru fiecare punct numărul de segmente care pleacă

din fiecare punct şi determină două puncte cu acelşi număr de segmente ce plecă din ele (acest număr îl

alegem astfel încât să fie maxim).

Aplicaţia 11. Se dau k (1k5000) puncte A1, A2, …, Ak prin coordonatele lor (numere reale cu cel mult 4 zecimale din intervalul (0,1) şi un număr natural n cu proprietatea că k>4n2. Se cere să se determine n puncte printre cele date (indicii lor) Ai[1],Ai[2],…,Ai[n] cu proprietatea că lungimea liniei frânte Ai[1]Ai[2]…Ai[n] este mai mică strict decât 1. Date de intrare: Fişierul text PUNCTE.IN va conţine pe prima linie n şi k, iar pe următoarele n linii, perechi de numere reale

ce corespund coorddonatelor punctelor. Date de ieşire:

Fişierul text PUNCTE.OUT va conţine pe prima linie indicii corespunzători liniei frânte.

Soluţie:

Se consideră pătratul cuvârfurile de coordonate (0,0); (1,0); (1,1); (0,1), care conţine punctele date în interior. Împărţim pătratul prin drepte paralele cu laturile, ca în figura de mai jos:

Se obţine astfel o partiţie cu 2n2=4n dreptunghiuri a pătratului. Într-ucât k>4n2, conform principiului lui

Dirichlet rezultă că există un dreptunghi ce conţine n puncte dintre cele date. Aceste puncte vor fi vârfurile

liniei frânte căutate. Ordinea punctelor în linia frântă o găsim prin ordonarea crescătoare a punctelor după abscise. Dacă linia frântă este Ai[1]Ai[2]…Ai[n] (care este inclusă într-un dreptunghi cu laturile de dimensiuni

1/2 şi 1/(2n)), atunci conform figurii de mai jos avem:

Lungime liniei frânte este mai mică decât suma proiecţiilor segmentelor (liniei frânte) pe latura de jos

(notată cu S1) şi respectiv pe latura din stânga (notată cu S2).

Întrucât punctele sunt ordonate crescător după abscisă avem că S11/2. Iar S2(1/2n)n. Astfel obţinem că

lungimea liniei frânte este mai mică strict decât 1/2+1/2=1. Programul care rezolvă problema este următorul:

1

1 1/2

1/(2n)

(2n-1)/(2n)

(2n-2)/(2n)

0

Ai[1]

Ai[2]

Ai[n-1]

Ai[n]

Page 5: PrDirichlet

5

Aplicaţia 12. Într-o tabără şcolară se află n elevi (1n5000) codificaţi prin numerele 1, 2, …, n. Între anumiţi elevi există relaţii de prietenie reciprocă. Cunoscând aceste relaţii de prietenie se cere să se determine doi elevi care au acelaşi număr de prieteni. Date de intrare În fişierul text PRIETENI.IN pe prima linie se află n, iar pe liniile următoare se află perechi de numere

naturale separate printr-un spaţiu care reprezintă relaţiile de prietenie.

Date de ieşire În fişiereul text PREIETENI.OUT se va scrie pe prima linie cele două numere asociate elevilor cu acelaşi

număr de prieteni (separate printr-un spaţiu). Exemplu

PRIETENI.IN 5

1 2

2 3 3 4

2 4 PRIETENI.OUT

3 4

Soluţie

Vom demonstra că există soluţie în orice situaţie. Renumerotând eventual elevii se obţin elevii 1, 2, …, k care au fiecare cel puţin un prieten. De aici rezultă că

fiecare dintre aceşti elevi poate fi prieten cu cel mult k-1 elevi. Rezultă astfel că elevii pot avea 1, 2, …, k-1 prieteni. Cum avem k elevi şi k-1 posibilităţi, conform principiului lui Dirichlet rezultă că există doi elevi care

au acelaşi număr de prieteni.

Algoritmul care va rezolva problema construieşte un vector cu numărul de prieteni al fiecărui elev şi caută în acesta (după ce a fost ordonat crescător) două valori egale.