se citeste un vector a cu n elemente numere naturale...

31
Se citeste un vector A cu n elemente numere naturale distincte, ordonate crescator. Se citeste apoi un numar natural k. Sa se determine pozitia pe care apare k in vectorul A si numarul de pasi facuti de program pana la gasirea lui. Daca numarul k nu se afla in vector se va afisa acest lucru impreuna cu numarul de pasi facuti de program. #include<iostream.h> int n, a[20],k; void citire() { int i; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; cin>>k; } void cautbin(int k) { int s,d,gasit,p=0; gasit=0; s=1; d=n; while(!gasit && s<=d) { int m=(s+d)/2; if(a[m]==k) { gasit=1; cout<<"gasit pe pozitia "<<m<<" in "<<p<<" pasi"; } else if(a[m]<k) s=m+1; else d=m-1; p++; } if(!gasit) cout<<"nu s-a gasit in "<<p<<" pasi"; } void main() { citire(); cautbin(k); } Se citesc 2 vectori A si B cu n si respectiv m elemente numere intregi. Elementele vectorilor sunt ordonate crescator. Sa se construiasca un vector C care sa contina elementele din A si B ordonate crescator. #include<iostream.h> int a[10],n,b[10],m,c[20],p; void main() { int i,j,k; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; cin>>m; for(i=1;i<=m;i++) cin>>b[i]; i=j=k=1; while(i<=n && j<=m) if(a[i]<b[j]) c[k++]=a[i++]; else c[k++]=b[j++]; while(i<=n) c[k++]=a[i++];

Upload: dangnguyet

Post on 02-Jul-2018

240 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

Se citeste un vector A cu n elemente numere naturale distincte, ordonate crescator. Se citeste

apoi un numar natural k. Sa se determine pozitia pe care apare k in vectorul A si numarul de

pasi facuti de program pana la gasirea lui. Daca numarul k nu se afla in vector se va afisa

acest lucru impreuna cu numarul de pasi facuti de program.

#include<iostream.h>

int n, a[20],k;

void citire()

{ int i;

cin>>n;

for(i=1;i<=n;i++) cin>>a[i];

cin>>k;

}

void cautbin(int k)

{ int s,d,gasit,p=0;

gasit=0;

s=1; d=n;

while(!gasit && s<=d)

{ int m=(s+d)/2;

if(a[m]==k) { gasit=1;

cout<<"gasit pe pozitia "<<m<<" in "<<p<<" pasi";

}

else if(a[m]<k) s=m+1;

else d=m-1;

p++;

}

if(!gasit) cout<<"nu s-a gasit in "<<p<<" pasi";

}

void main()

{ citire();

cautbin(k);

}

Se citesc 2 vectori A si B cu n si respectiv m elemente numere intregi. Elementele vectorilor

sunt ordonate crescator. Sa se construiasca un vector C care sa contina elementele din A si B

ordonate crescator.

#include<iostream.h>

int a[10],n,b[10],m,c[20],p;

void main()

{ int i,j,k;

cin>>n;

for(i=1;i<=n;i++) cin>>a[i];

cin>>m;

for(i=1;i<=m;i++) cin>>b[i];

i=j=k=1;

while(i<=n && j<=m)

if(a[i]<b[j]) c[k++]=a[i++];

else c[k++]=b[j++];

while(i<=n) c[k++]=a[i++];

Page 2: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

while(j<=m) c[k++]=b[j++];

for(i=1;i<=n+m;i++) cout<<c[i]<<" ";

}

Se citeste un numar natural de maxim 9 cifre. Sa se afiseze cea mai mare si cea mai mica

cifra din numar.

#include<iostream.h>

void main()

{ int c,min=10,max=0;

long n;

cin>>n;

while(n)

{c=n%10;

if(c>max) max=c;

else if(c<min) min=c;

n=n/10;

}

cout<<min<<" "<<max;

}

Metoda bulelor

Se citeste un vector A cu n elemente numere intregi. Sa se ordoneze crescator elementele

vectorului folosind metoda bulelor.

#include<iostream.h>

int n, a[20];

void citire()

{ int i;

cin>>n;

for(i=1;i<=n;i++) cin>>a[i];

}

void afis()

{ for(int i=1;i<=n;i++) cout<<a[i]<<" ";

}

void bule(int a[20], int n)

{ int i, aux, gata;

do

{ gata=1;

for(i=1;i<n;i++)

if(a[i]>a[i+1])

{ aux=a[i];

a[i]=a[i+1];

a[i+1]=aux;

gata=0;

}

}

while(!gata);

}

void main()

{ citire();

bule(a,n);

Page 3: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

afis();

}

Se citeste un numar natural n de maxim 9 cifre. Sa se determine daca el are toate cifrele

ordonate strict descrescator de la cifra cea mai semnificativa spre cifra unitatilor.

Ex: Pentru 54321 se va afisa DA, iar pentru 543234 se va afisa NU.

#include<iostream.h>

void main()

{long n;

int c,d,p=1;

d=0;

cin>>n;

while(n)

{c=n%10;

if(c<d) p=0;

n=n/10;

d=c;

}

if(p==1) cout<<"da";

else cout<<"nu";

}

Se citeste un numar natural cu cel mult 4 cifre. Sa se calculeze cel mai mic multiplu par al

numarului obtinut din prima si ultima cifra a numarului citit.

Ex. pentru 1265 se obtine 30 (2*15)

#include<iostream.h>

int main()

{

int n,p,u;

cin>>n;

u=n%10;

while(n>9) n=n/10;

p=n;

cout<<(p*10+u)*2;

return 0;

}

Se citeste un numar natural n cu cel mult 9 cifre. Sa se calculeze numarul obtinut din cifrele

lui pare aflate pe pozitii impare, numararea pozitiilor cifrelor incepand cu cifra cea mai

semnificativa.

Ex: daca n=2346561 rezulta 24

#include<iostream.h>

int main()

{ long n,r=0;

cin>>n;

while(n)

{ r=r*10+n%10;

n=n/10;

}

while(r)

{ if(r%2==0) n=n*10+r%10;

r=r/100;

Page 4: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

}

cout<<n;

}

Se citeste un numar natural cu cel mult 9 cifre. Sa se determine de cate ori apare ultima cifra

in numarul citit.

#include<iostream.h>

int main()

{ long n,k=0,c;

cin>>n;

c=n%10;

while(n)

{ if(n%10==c) k++;

n=n/10;

}

cout<<k;

return 0;

}

Se citeste un numar natural n cu cel mult 9 cifre. Sa se determine cea mai mare cifra a lui n

si de cate ori apare ea in n.

#include<iostream>

using namespace std;

int main()

{

int n,k=0,cmax=0;

cin>>n;

while(n>0)

{

if(n%10>cmax) { cmax=n%10; k=1; }

else if(n%10==cmax) k++;

n=n/10;

}

cout<<cmax<<" "<<k;

return 0;

}

Se considera urmatorul sir de numere: 1, 1, 2, 2, 1, 2, 3, 3, 3, 1, 2, 3, 4, 4, 4, 4, ... .Pentru un

numar natural n de maxim 4 cifre sa se scrie un program eficient ca timp de executie si

utilizare a memoriei care sa determine elementul de pe pozitia n din sirul definit mai sus.

#include<iostream.h>

#include<math.h>

int main()

{ int n,k;

cin>>n;

k=sqrt(n);

if(k*k==n) cout<<k;

else if(n-k*k<=k+1) cout<<n-k*k;

else cout<<k+1;

return 0;

}

Page 5: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

Se citeste un numar natural n de maxim 4 cifre. Sa se calculeze si sa se afiseze termenii din

sirul lui Fibonacci care sunt mai mici decat n.

#include<iostream.h>

int main()

{ int x,y,z,n;

cin>>n;

x=1;y=1;cout<<"1 1 ";

while(x+y<n)

{

z=x+y;

cout<<z<<" ";

x=y;

y=z;

}

}

Se citesc n numere naturale. Sa se afiseze ce mai mare numar prim si de cate ori apare el.

#include<iostream>

using namespace std;

int main()

{int n,x,ok,max=0, nrap,i,d;

cin>>n;

for(i=1;i<=n;i++)

{

cin>>x;

ok=1;

if(x==0 || x==1) ok=0;

else for(d=2;d<=x/2;d++) if(x%d==0) ok=0;

if(ok)

if(x>max) { max=x;

nrap=1;

}

else if(x==max) nrap++;

}

cout<<max<<" "<<nrap;

system("pause");

return 0;

}

Se citesc 2 numere naturale a si b. Sa se afiseze cel care mai multe cifre 1 in scrierea in baza

2.

#include<iostream>

using namespace std;

int main()

{int x,y,a,b,sa=0,sb=0;

cin>>a>>b;

x=a;y=b;

while(a>0)

{ sa=sa+a%2;

a=a/2;

Page 6: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

}

while(b>0)

{

sb=sb+b%2;

b=b/2;

}

if(sa>sb) cout<<x;

else cout<<y;

system("pause");

return 0;

}

Se citeste un numar natural n cu cel mult 3 cifre si o baza b cuprinsa intre 2 si 9. Sa se

afiseze reprezentarea lui n in baza b. Se vor folosi doar variabile de tipuri simple.

#include<iostream>

using namespace std;

int main()

{int n,b;

long r,p;

cin>>n>>b;

r=0; p=1;

while(n!=0)

{

r=r+n%b*p;

p=p*10;

n=n/b;

}

cout<<r;

system("pause");

return 0;

}

Se se afiseze primele n numere prime, n numar natural citit de la tastatura.

#include<iostream>

using namespace std;

int main()

{int n,d,ok,x,k;

cin>>n;

x=2;

k=0;

while(k<n)

{

ok=1;

for(d=2;d<=x/2;d++)

if(x%d==0) ok=0;

if(ok) { cout<<x<<" ";

k++;

}

x++;

}

system("pause");

return 0;

Page 7: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

}

Se citesc numere de la tastatura pana la primul numar prim citit. Sa se afiseze acest numar,

iar pentru fiecare celelalte se sa afiseze mesajul "nu e prim".

#include<iostream>

using namespace std;

int main()

{int n,d,ok;

do

{ cin>>n;

ok=1;

if(n==0 || n==1) ok=0;

else for(d=2;d<=n/2;d++)

if(n%d==0) ok=0;

if(!ok) cout<<"nu e prim";

}

while(!ok);

cout<<n;

system("pause");

return 0;

}

Sa se descompuna in factori primi un numar natural n si sa se afiseze factorii si puterile la

care apar ei in descompunere.

#include<iostream>

using namespace std;

int main()

{int n,d,p;

cin>>n;

d=2;

while(n>1)

{ if(n%d==0)

{

p=0;

while(n%d==0) { p++;

n=n/d;

}

cout<<d<<" la " <<p<<endl;

}

else d++;

}

system("pause");

return 0;

}

Sa se determine cel mai mic numar prim mai mare decat un numar natural n citit de la

tastatura.

#include<iostream>

using namespace std;

Page 8: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

int main()

{

int n,i,ok,d,gasit;

cin>>n;

gasit=0;

i=n+1;

while(!gasit)

{

ok=1;

if(i==0 || i==1) ok=0;

else for(d=2;d<=i/2;d++)

if(i%d==0) ok=0;

if(ok) gasit=1;

else i++;

}

cout<<i;

system("pause");

return 0;

}

Sa se afiseze toate numerele prime din intervalul [a,b].

#include<iostream>

using namespace std;

int main()

{

int a, b, i, ok, d;

cin>>a>>b;

for(i=a;i<=b;i++)

{

ok=1;

if(i==0 || i==1) ok=0;

else for(d=2;d<=i/2;d++)

if(i%d==0) ok=0;

if(ok) cout<<i<<" ";

}

system("pause");

return 0;

}

Se citesc de la tastura cele n elemente ale unui sir de numere intregi . Sa se afiseze toate

perechile de elemente ale sirului ( nu neaparat consecutive ) cu proprietatea ca ambele

elementele ale perechii au aceeasi suma a cifrelor .

#include<fstream>

using namespace std;

ifstream fin("1.in");

ofstream fout("1.out");

int main()

{

int v[100],n,s1,s2,x,i,j;

fin>>n;

for(i=0;i<n;i++) fin>>v[i];

Page 9: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

for(i=0;i<n;i++)

for(j=i+1;j<n;j++)

{

s1=0;

x=v[i];

while(x>0)

{

s1=s1+x%10;

x=x/10;

}

s2=0;

x=v[j];

while(x>0)

{

s2=s2+x%10;

x=x/10;

}

if(s1==s2) fout<<v[i]<<" "<<v[j]<<endl;

}

fin.close();

fout.close();

return 0;

}

Se citesc 2 numere naturale a si n cu maxim 8 cifre fiecare. Sa se calculeze ultima cifra a

numarului a ridicat la puterea n.

#include<iostream>

using namespace std;

int main()

{

unsigned int n,a;

cin>>a>>n;

a=a%10;

if(n%4==1) cout<<a;

else if(n%4==2) cout<<a*a%10;

else if(n%4==3) cout<<a*a*a%10;

else if(n%4==0) cout<<a*a*a*a%10;

system("pause");

return 0;

}

Un numar se numeste aproape prim daca poate fi scris ca produs de 2 numere prime

distincte. Din fisierul p.in se citesc n numere naturale cu maxim 4 cifre fiecare. Sa se

determine cate dintre ele sunt aproape prime.

#include<fstream.h>

using namespace std;

ifstream fin("f.in");

ofstream fout("f.out");

Page 10: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

int main()

{

int n, d, x, nr,i,k=0;

fin>>n;

for(i=1;i<=n;i++)

{

fin>>x;

d=2;

nr=0;

while(x>1 && nr<=2)

{ while(x%d==0 && nr<=2) { nr++;

x=x/d;

}

d++;

}

if(nr==2) k++;

}

fout<<k;

fin.close();

fout.close();

return 0;

}

Un om are de urcat n trepte stiind ca poate pasi pe treapta urmatoare sau sari peste o treapta.

In cate moduri poate urca omul cele n trepte?

using namespace std;

ifstream fin("p7p60.in");

ofstream fout("p7p60.out");

int main()

{

int x,y,z,n;

x=1;y=1;

fin>>n;

if(n<=1) fout<<1;

else

{ for(int i=2;i<=n;i++)

{ z=x+y;

x=y;

y=z;

}

fout<<z;

}

fin.close();

fout.close();

return 0;

}

Sa se ordoneze descrescator elementele lui vector cu n elemente numere intregi fara a afecta

elementele nule din vector si pozitiile acestora.

#include<fstream>

using namespace std;

ifstream fin("date.in");

ofstream fout("date.out");

Page 11: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

int main()

{

int i,j,aux,n,a[100];

fin>>n;

for(i=1;i<=n;i++) fin>>a[i];

for(i=1;i<=n;i++)

for(j=i+1;j<=n;j++)

if(a[i]<a[j] && a[i]!=0 && a[j]!=0)

{ aux=a[i];

a[i]=a[j];

a[j]=aux;

}

for(i=1;i<=n;i++) fout<<a[i]<<" ";

fin.close();

fout.close();

return 0;

}

Gnom-sort.

#include<fstream>

using namespace std;

ifstream fin("date.in");

ofstream fout("date.out");

int main()

{

int i,n,a[100];

fin>>n;

for(i=1;i<=n;i++) fin>>a[i];

for(i=1;i<n;i++)

if(a[i]>a[i+1])

{ int aux=a[i];

a[i]=a[i+1];

a[i+1]=aux;

if(i>1)i=i-2;

}

for(i=1;i<=n;i++) fout<<a[i]<<" ";

fin.close();

fout.close();

return 0;

}

Cautarea binara.

#include<fstream>

using namespace std;

ifstream fin("dateo.in");

ofstream fout("dateo.out");

int main()

{

int x,i,n,a[100],s,d,m,gasit=0;

fin>>n;

for(i=1;i<=n;i++) fin>>a[i];

fin>>x;

Page 12: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

s=1; d=n;

while(s<=d && !gasit)

{

m=(s+d)/2;

if(a[m]==x) gasit=1;

else if(a[m]<x) s=m+1;

else d=m-1;

}

if(gasit) fout<<m;

else fout<<"Nu se gaseste";

fin.close();

fout.close();

return 0;

}

Bubble-sort.

#include<fstream>

using namespace std;

ifstream fin("date.in");

ofstream fout("date.out");

int main()

{

int i,ok,n,a[100];

fin>>n;

for(i=1;i<=n;i++) fin>>a[i];

do { ok=1;

for(i=1;i<n;i++)

if(a[i]>a[i+1])

{ int aux=a[i];

a[i]=a[i+1];

a[i+1]=aux;

ok=0;

}

}

while(!ok);

for(i=1;i<=n;i++) fout<<a[i]<<" ";

fin.close();

fout.close();

return 0;

}

Sortarea prin selectie directa.

#include<fstream>

using namespace std;

ifstream fin("date.in");

ofstream fout("date.out");

int main()

{

int i,j,n,a[100];

fin>>n;

for(i=1;i<=n;i++) fin>>a[i];

for(i=1;i<n;i++)

for(j=i+1;j<=n;j++)

Page 13: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

if(a[i]>a[j])

{ int aux=a[i];

a[i]=a[j];

a[j]=aux;

}

for(i=1;i<=n;i++) fout<<a[i]<<" ";

fin.close();

fout.close();

return 0;

}

Din fisierul date.in se citeste un vector cu n elemente naturale. Sa se ordoneze crescator

elementele pare si descrescator cele impare fara a modifica pozitiile pe care se afla elemente

pare, respectiv impare.

#include<fstream>

using namespace std;

ifstream fin("date.in");

ofstream fout("date.out");

int main()

{

int i,j,aux,n,a[100];

fin>>n;

for(i=1;i<=n;i++) fin>>a[i];

for(i=1;i<=n;i++)

for(j=i+1;j<=n;j++)

if(a[i]>a[j] && a[i]%2==0 && a[j]%2==0 || a[i]<a[j] &&

a[i]%2!=0 && a[j]%2!=0)

{ aux=a[i];

a[i]=a[j];

a[j]=aux;

}

for(i=1;i<=n;i++) fout<<a[i]<<" ";

fin.close();

fout.close();

return 0;

}

Se citeste un numar natural n. Sa se determine cate cifre pare si cate cifre impare contine

numarul n.

#include<iostream>

using namespace std;

int main()

{

int n,imp,par;

cout<<"n="; cin>>n;

par=imp=0;

while(n>0)

{

if(n%2==0) par++;

else imp++;

n=n/10;

Page 14: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

}

cout<<par<<" pare si "<<imp<<" impare";

return 0;

}

Sa se elimine dintr-un numar natural n toate cifrele pare.

#include<iostream>

using namespace std;

int main()

{

int n,r;

cout<<"n="; cin>>n;

r=0;

while(n>0)

{

if(n%10%2!=0) r=r*10+n%10;

n=n/10;

}

while(r>0)

{

n=n*10+r%10;

r=r/10;

}

cout<<n;

}

Se citeste un numar natural n. Sa se calculeze si sa se afiseze rasturnatul (oglinditul) lui n.

#include<iostream>

using namespace std;

int main()

{

int n,r;

r=0;

cout<<"n="; cin>>n;

while(n>0)

{

r=r*10+n%10;

n=n/10;

}

cout<<"rasturnatul este "<<r;

return 0;

}

Se citeste un numar natural n. Sa se verifice daca este palindrom (citit de la dreapta spre

stanga are aceeasi valoare).

Exemplu: 123321 este palindrom, iar 12322 nu este

#include<iostream.h>

using namespace std;

int main()

{

int n,r,c;

r=0;

cout<<"n="; cin>>n;

c=n;//copie

Page 15: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

while(n>0)

{ r=r*10+n%10;

n=n/10;

}

if(r==c) cout<<"este palindrom";

else cout<<"nu este palindrom";

return 0;

}

Se citeste un numar natural n cu cel putin 3 cifre. Sa se calculeze si sa se afiseze numarul

obtinut din n prin eliminarea primei si a ultimei cifre.

Exemplu:

n=34255 rezulta n=425

#include<iostream>

using namespace std;

int main()

{

int n,r;

cout<<"n="; cin>>n;

n=n/10;

r=0;

while(n>0)

{

r=r*10+n%10;

n=n/10;

}

r=r/10;

while(r>0)

{

n=n*10+r%10;

r=r/10;

}

cout<<n;

return 0;

}

Se citesc 2 numere naturale a si b. Sa se determine cate cifre egale se afla pe pozitii indentice

in cele doua numere.

Exemplu:

a=3421345

b=4531125

cifre egale pe pozitii identice sunt cifra unitatilor si cea a miilor, deci doua.

#include<iostream>

using namespace std;

int main()

{

int a,b,c;

cout<<"a="; cin>>a;

cout<<"b="; cin>>b;

c=0;

while(a>0 && b>0)

{ if(a%10==b%10) c++;

a=a/10;

b=b/10;

}

Page 16: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

cout<<c;

return 0;

}

Sa se descompuna un numar natural n in toate modurile ca suma de doua numere prime.

Daca nu exista nici o descompunere, atunci sa se afiseze mesajul Imposibil.

#include<iostream>

using namespace std;

int main()

{

int n,x,y,p,d,ok=0;

cout<<"n="; cin>>n;

for(x=2;x<=n/2;x++)

{

p=1;

for(d=2;d<=x/2;d++)

if(x%d==0) p=0;

y=n-x;

for(d=2;d<=y/2;d++)

if(y%d==0) p=0;

if(p) { cout<<x<<" "<<y<<endl;

ok=1;

}

}

if(!ok) cout<<"imposibil";

return 0;

}

Un numar se numeste perfect daca este egal cu suma divizorilor sai mai mici decat el, de

exemplu 6=1+2+3.

Sa se afiseze toate numerele perfecte mai mici sau egale cu un numar n citit de la tastatura.

#include<iostream>

using namespace std;

int main()

{

int n,s,d,x;

cin>>n;

for(x=1;x<=n;x++)

{

s=0;

for(d=1;d<x;d++)

if(x%d==0) s=s+d;

if(s==x) cout<<x<<" ";

}

return 0;

}

Se citesc doua numere naturale a si b, fiecare avand cifrele distincte. Determinati cate cifre

comune au cele 2 numere.

Exemplu:

a=23416 si b=345987 au 2 cifre comune (3 si 4)

#include<iostream>

using namespace std;

Page 17: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

int main()

{

int a,b,b1,c;

cout<<"a="; cin>>a;

cout<<"b="; cin>>b;

c=0;

while(a>0)

{

b1=b;

while(b1>0)

{ if(b1%10==a%10) c++;

b1=b1/10;

}

a=a/10;

}

cout<<c;

return 0;

}

Se citeste un numar natural n avand numar impar de cifre. Sa se elimine din numarul n cifra

din mijloc si sa se afiseze numarul rezultat.

#include<iostream>

using namespace std;

int main()

{

int n,n1,p,c,i;

cout<<"n="; cin>>n;

n1=n;

c=0;

while(n>0)

{

c++;

n=n/10;

}

p=1;

for(i=1;i<=c/2;i++) p=p*10;

n=n1/(p*10)*p+n1%p;

cout<<n;

return 0;

}

sau

#include<iostream>

using namespace std;

int main()

{

int n,nr,r,x,i;

cout<<"n="; cin>>n;

nr=0;

x=n;

while(x>0)

{

nr++;

x=x/10;

}

r=0;

for(i=1;i<=nr/2;i++)

Page 18: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

{

r=r*10+n%10;

n=n/10;

}

n=n/10;

while(r>0)

{

n=n*10+r%10;

r=r/10;

}

cout<<n;

}

Se citeste un numar natural n. Sa se afiseze toate numerele mai mici sau egale cu n care sunt

egale cu suma cuburilor cifrelor lor.

Exemmplu: 153 = 1 + 125 + 27

#include<iostream>

using namespace std;

int main()

{ int n,x,y,s;

cout<<"n="; cin>>n;

for(x=1;x<=n;x++)

{

y=x;

s=0;

while(y>0)

{

s=s+(y%10)*(y%10)*(y%10);

y=y/10;

}

if(x==s) cout<<x<<" ";

}

return 0;

}

Se citeste un numar natural n si o cifra c. Calculati de cate ori apare cifra c in scrierea

numerelor naturale de la 1 la n.

#include<iostream>

using namespace std;

int main()

{

int n,c,nr,x,y;

cout<<"n="; cin>>n;

cout<<"c="; cin>>c;

nr=0;

for(x=1;x<=n;x++)

{

y=x;

while(y>0)

{

if(y%10==c) nr++;

y=y/10;

}

}

cout<<nr;

return 0;

Page 19: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

}

Se citesc numere naturale pana cand se citeste numarul 0. Sa se afiseze care dintre numerele

citite are numar minim de divizori primi. Daca exista mai multe numere cu acelasi numar

minim de divizori se va afisa doar ultimul dintre ele.

#include<iostream>

using namespace std;

int main()

{

int n,min,d,c,n1,nmin;

cout<<"n="; cin>>n;

min=10000;

while(n>0)

{

n1=n;

c=0;

d=2;

while(n>1)

{

if(n%d==0) { c++;

while(n%d==0) n=n/d;

}

else d++;

}

if(c<=min){ min=c;

nmin=n1;

}

cout<<"n="; cin>>n;

}

cout<<nmin;

}

Sa se afiseze toate perechile numere naturale x si y din intervalul [1,n] care sunt prime si

consecutive in multimea numerelor impare.

De exemplu, de la 1 la 15 avem perechile:

3 5

5 7

11 13

#include<iostream>

using namespace std;

int main()

{ int n, x, y,px,py,d;

cout<<"n="; cin>>n;

for(x=3;x<=n-2;x=x+2)

{

y=x+2;

px=1;

for(d=3;d<=x/2;d=d+2)

if(x%d==0) px=0;

py=1;

for(d=3;d<=y/2;d=d+2)

if(y%d==0) py=0;

if(px==1 && py==1) cout<<x<<" "<<y<<endl;

}

return 0;

Page 20: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

}

Sa se afiseze numerele mai mici sau egale cu n care au proprietatea sa atat ele cat si

rasturnatul lor sunt numere prime.

Exemplu: 13 este prim si la fel 31.

#include<iostream>

using namespace std;

int main()

{

int n, x, y,p,d,r;

cout<<"n="; cin>>n;

for(x=2;x<=n;x++)

{

p=1;

for(d=2;d<=x/2;d++)

if(x%d==0) p=0;

if(p==1)

{

r=0;

y=x;

while(y>0)

{ r=r*10+y%10;

y=y/10;

}

for(d=2;d<=r/2;d++)

if(r%d==0) p=0;

if(p==1) cout<<x<<" ";

}

}

return 0;

}

Se citeste un numar natural n. Sa se determine daca el are cifrele ordonate crescator sau

descrescator sau cifrele lui nu sunt ordonate.

#include<iostream>

using namespace std;

int main()

{

int n,c,d;

c=d=1;

cin>>n;

while(n>9)

{

if(n%10>=n/10%10) d=0;

if(n%10<=n/10%10) c=0;

n=n/10;

}

if(c==1) cout<<"crescator";

else if (d==1) cout<<"descrescator";

else cout<<"nici";

return 0;

}

Sa se calculeze cmmdc al 3 numere a, b si c fara a calcula cmmdc a doua dintre ele si apoi cu

al treilea.

Page 21: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

#include<iostream>

using namespace std;

int main()

{

int a,b,c,min;

cout<<"a="; cin>>a;

cout<<"b="; cin>>b;

cout<<"c="; cin>>c;

while(a!=b || a!=c || b!=c)

{

min=a;

if(b<min) min=b;

if(c<min) min=c;

if(a!=min) a=a-min;

if(b!=min) b=b-min;

if(c!=min) c=c-min;

}

cout<<a;

return 0;

}

Doua numere naturale diferite a si b se numesc prietene daca suma divizorilor lui a fara a

este egala cu b si suma divizorilor lui b fara b este egala cu a.

Scrieti un program care sa afiseze primele 3 perechi de numere prietene.

#include<iostream>

using namespace std;

int main()

{

int k,x,sd1,sd2,d;

k=0;

x=2;

while(k<3)

{

sd1=0;

for(d=1;d<=x/2;d++)

if(x%d==0) sd1=sd1+d;

sd2=0;

for(d=1;d<=sd1/2;d++)

if(sd1%d==0) sd2=sd2+d;

if(sd2==x && x<sd1)

{ cout<<x<<" "<<sd1<<endl;

k++;

}

x++;

}

return 0;

}

Cifra de control a unui numar n se numeste cifra obtinuta calculand repetat suma cifrelor lui

n si inlocuidu-l pe n cu suma calculata.

Pentru un numar natural n afisati cifra lui de control.

Exemplu:

pentru n=3429 calculam suma cifrelor 18, iar suma cifrelor lui 18 este 9, deci 9 este cifra de

control a lui 3429.

Page 22: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

#include<iostream>

using namespace std;

int main()

{

int n,s;

cout<<"n=";

cin>>n;

while(n>9)

{

s=0;

while(n>0)

{

s=s+n%10;

n=n/10;

}

n=s;

}

cout<<n;

}

Se citeste un numar natoral n. Afisati cifrele distincte ale lui n (in orice ordine).

Exemplu: Cifrele distincte ale lui 234542 sunt 2, 3, 4 si 5.

#include<iostream>

using namespace std;

int main()

{

int n,r,c;

cout<<"n="; cin>>n;

while(n>0)

{

c=n%10;

cout<<c;

r=0;

while(n>0)

{

if(n%10!=c) r=r*10+n%10;

n=n/10;

}

n=r;

}

return 0;

}

sau

#include<iostream>

using namespace std;

int main()

{

int n,c,g,m;

cin>>n;

for(c=0;c<=9;c++)

{

m=n;

g=0;

while(m>0)

{

Page 23: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

if(m%10==c) g=1;

m=m/10;

}

if(g) cout<<c<<" ";

}

return 0;

}

Un numar natural n se numeste superprim daca atat el cat si toate prefixele sale sunt numere

prime. Numarul 2399 este superprim deoarece 2399, 239, 23 si 2 sunt numere prime.

Pentru un numar natural n citit de la tastatura aflati toate numerele superprime mai mici sau

egale cu n.

#include<iostream>

using namespace std;

int main()

{

int n,x,d,i,p;

cin>>n;

for(i=2;i<=n;i++)

{

p=1;

x=i;

while(x)

{

if(x==1) p=0;

else

if(x%2==0) p=0;

else for(d=3;d<=sqrt(x*1.0);d=d+2)

if(x%d==0) p=0;

x=x/10;

}

if(p) cout<<i<<" ";

}

return 0;

}

Se citesc 2 numere naturale a si b. Afisati toate perechile de numere x si y din intervalul [a,b]

care au proprietatea ca au acelasi numar de divizori.

#include<iostream>

using namespace std;

int main()

{

int a,b,x,y,ndx,ndy,d;

cin>>a>>b;

for(x=a;x<=b;x++)

for(y=x+1;y<=b;y++)

{

ndx=0;

for(d=1;d<=x;d++)

if(x%d==0) ndx++;

ndy=0;

for(d=1;d<=y;d++)

if(y%d==0) ndy++;

if(ndx==ndy) cout<<x<<" "<<y<<endl;

}

return 0;

Page 24: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

}

Cifra de control a unui numar n se numeste cifra obtinuta calculand repetat suma cifrelor lui

n si inlocuidu-l pe n cu suma calculata.

Exemplu:

pentru n=3429 calculam suma cifrelor 18, iar suma cifrelor lui 18 este 9, deci 9 este cifra de

control a lui 3429.

Dandu-se un numar natural n si o cifra x, afisati primele n numere naturale care au cifra de

control egala cu x.

Exemplu:

pentru n=5 si x=7 se vor afisa numerele 7, 16, 25 , 34 si 43.

#include<iostream>

using namespace std;

int main()

{

int n,x,a;

cout<<"n="; cin>>n;

cout<<"x="; cin>>x;

for(a=x;a<=x+(n-1)*9;a=a+9)

cout<<a<<" ";

return 0;

}

Se citeste un numar natural n. Introduceti semnul * in numar astfel incat produsul obtinut sa

fie maxim.

Exemplu: n=4322, produsul maxim se obtine astfel: 4*322=1288. (celelalte variante:

43*22=946 sau 432*2=864 dau produs mai mic)

#include<iostream>

using namespace std;

int main()

{

int n,p,pp,pmax=0;

cout<<"n="; cin>>n;

p=10;

while(p<=n)

{

if(n/p*(n%p)>pmax){ pmax=n/p*(n%p);

pp=p;

}

p=p*10;

}

cout<<n/pp<<"*"<<n%pp<<"="<<pmax;

return 0;

}

Se citeste un numar natural n si apoi n numere naturale. Afisati numarul total de cifre care

compun numerele prime dintre cele n citite.

#include<iostream>

using namespace std;

int main()

{

Page 25: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

int n,i,x,p,d,nc,nt=0;

cout<<"n="; cin>>n;

for(i=1;i<=n;i++)

{

cout<<"x="; cin>>x;

p=1;

if(x==0 || x==1) p=0;

else for(d=2;d<=x/2;d++)

if(x%d==0) p=0;

if(p==1)

{

nc=0;

while(x>0)

{

nc++;

x=x/10;

}

nt=nt+nc;

}

}

cout<<nt;

return 0;

}

Se citeste un numar natural n. Afisati primele n perechi de numere prime care sunt

consecutive in multimea numerelor impare.

Exemplu: pentru n=3 se afiseaza

3 5

5 7

11 13

#include<iostream>

using namespace std;

int main()

{

int n,k,p,d,x,y;

cin>>n;

x=3;

k=0;

while(k<n)

{

p=1;

for(d=2;d<=x/2;d++)

if(x%d==0) p=0;

if(p==1)

{

y=x+2;

for(d=2;d<=y/2;d++)

if(y%d==0) p=0;

}

if(p==1)

{

cout<<x<<" "<<y<<endl;

k++;

}

x=x+2;

}

return 0;

Page 26: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

}

Se citeste un numar natural n. Afisati cele 2 numere obtinute prin impartirea "la mijloc" a

numarului n.

Exemple: n=12345 se afiseaza 12 si 345

n= 12345678 se afiseaza 1234 5678

#include<iostream>

using namespace std;

int main()

{

int n,x,p,nc,i;

cin>>n;

x=n;

nc=0;

while(x)

{ nc++;

x=x/10;

}

if(nc%2==0) nc=nc/2;

else nc=nc/2+1;

p=1;

for(i=1;i<=nc;i++) p=p*10;

cout<<n/p<<" "<<n%p;

return 0;

}

Se citeste un numar natural n. Afisati cel mai mic numar palindrom care este mai mare decat

n.

Exemple: n=12345 se afiseaza 12421

n= 123 se afiseaza 131

#include<iostream>

using namespace std;

int main()

{

int n,x,r,y;

cin>>n;

x=n+1;

do

{

y=x;

r=0;

while(y>0)

{

r=r*10+y%10;

y=y/10;

}

if(x!=r) x++;

}

while(x!=r);

cout<<x;

}

Sa se afiseze cifra care apare de cele mai multe ori intr-un numar natural n si de cate ori

apare ea in n.

Exemplu: n=133121 se afiseaza 1 3

Page 27: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

#include<iostream>

using namespace std;

int main()

{

int n,x,c,k,m=0,cmax;

cin>>n;

for(c=0;c<=9;c++)

{

x=n;

k=0;

while(x>0)

{

if(x%10==c) k++;

x=x/10;

}

if(k>m)

{

m=k;

cmax=c;

}

}

cout<<cmax<<" "<<m;

return 0;

}

Se citeste un numar natural n cu numar par de cifre. Calculati si afisati numarul obtinut din n

inversand cifra unitatilor cu a zecilor, cea a sutelor cu cea a miilor, etc.

Exemplu:

n=123456 rezulta 214365.

#include<iostream>

using namespace std;

int main()

{

int n,r;

cin>>n;

r=0;

while(n>0)

{

r=r*100+n%100;

n=n/100;

}

while(r>0)

{

n=n*10+r%10;

r=r/10;

}

cout<<n;

return 0;

}

Se citeste un numar natural n si apoi n numere naturale cu maxim 4 cifre fiecare. Calculati si

afisati numarul obtinut prin lipirea la numarul maxim a numarului minim dintre cele n

numere citite.

Exemplu: n=4 si numerele 56 234 2321 345, numarul rezultat va fi 232156.

#include<iostream>

Page 28: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

using namespace std;

int main()

{

int n,i,x,maxx=-10000, minn=10000,r=0;

cin>>n;

for(i=1;i<=n;i++)

{

cin>>x;

if(x>maxx) maxx=x;

if(x<minn) minn=x;

}

while(minn>0)

{

r=r*10+minn%10;

minn=minn/10;

}

while(r>0)

{

maxx=maxx*10+r%10;

r=r/10;

}

cout<<maxx;

}

Calculati si afisati media aritmetica a palindroamelor din intervalul [a,b], a si b citite de la

tastatura.

#include<iostream>

using namespace std;

int main()

{

int a,b,x,r,y,s=0,n=0;

cin>>a>>b;

for(x=a;x<=b;x++)

{

r=0;

y=x;

while(y>0)

{

r=r*10+y%10;

y=y/10;

}

if(r==x)

{

s=s+x;

n++;

}

}

if(n==0) cout<<"nu exista palindroame";

else cout<<(float)s/n;

return 0;

}

Se citeste un numar natural n. Afisati cel mai mic palindrom mai mare decat n.

Exemplu: daca n=1232 se va afisa 1331.

#include<iostream>

using namespace std;

Page 29: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

int main()

{

int n,x,r,y;

cin>>n;

x=n+1;

do

{

y=x;

r=0;

while(y>0)

{ r=r*10+y%10;

y=y/10;

}

if(x!=r) x++;

}

while(x!=r);

cout<<x;

return 0;

}

Se citeste un numar natural k, un numar natural n si apoi n numere naturale. Afisati cel mai

mare dintre cele n numere citite care are exact k divizori.

#include<iostream>

using namespace std;

int main()

{

int k,n,i,x,d,nd,maxx=0;

cout<<"k="; cin>>k;

cout<<"n="; cin>>n;

for(i=1;i<=n;i++)

{

cin>>x;

nd=0;

for(d=1;d<=x;d++)

if(x%d==0)

nd++;

if(nd==k)

if(x>maxx) maxx=x;

}

cout<<maxx;

return 0;

}

Afisati toate perechile de numere de la 1 la n care au proprietatea ca au aceeasi suma a

cifrelor

#include<iostream>

using namespace std;

int main()

{

int n,i,j,x,y,si,sj;

cin>>n;

for(i=1;i<=n;i++)

for(j=i+1;j<=n;j++)

{

x=i;

si=0;

Page 30: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

while(x>0)

{

si=si+x%10;

x=x/10;

}

y=j;

sj=0;

while(y>0)

{

sj=sj+y%10;

y=y/10;

}

if(si==sj) cout<<i<<" "<<j<<endl;

}

return 0;

}

Se citesc 2 numere naturale a si b, a mai mic decat b. Afisati suma numerelor prime din

intervalul [a,b].

#include<iostream>

using namespace std;

int main()

{

int a,b,n,p,d,s=0;

cout<<"a="; cin>>a;

cout<<"b="; cin>>b;

for(n=a;n<=b;n++)

{

p=1;

for(d=2;d<=n/2;d++)

if(n%d==0) p=0;

if(p==1) s=s+n;

}

cout<<s;

return 0;

}

Afisati toate numerele mai mici ca un numar n citit de la tastatura care au proprietatea ca

sunt încadrate de numere prime (x este incadrat de numere prime daca x+1 si x-1 sunt prime,

de exemplu numarul 6).

#include<iostream>

using namespace std;

int main()

{

int n,x,p1,p2,d;

cin>>n;

for(x=1;x<=n;x++)

{

p1=1;

if(x-1==0 || x-1==1) p1=0;

else for(d=2;d<=(x-1)/2;d++)

if((x-1)%d==0) p1=0;

p2=1;

for(d=2;d<=(x+1)/2;d++)

if((x+1)%d==0) p2=0;

if(p1==1 && p2==1) cout<<x<<" ";

Page 31: Se citeste un vector A cu n elemente numere naturale ...dunarea9a.wikispaces.com/file/view/...probleme+rezolvate+.pdf · afis(); } Se citeste un numar natural n de maxim 9 cifre

}

return 0;

}

Se citesc 2 numere naturale a si b, a mai mic decat b. Afisati cel mai mic numar palindrom

din intervalul [a,b].

#include<iostream>

using namespace std;

int main()

{

int a,b,x,y,r;

cout<<"a="; cin>>a;

cout<<"b="; cin>>b;

for(x=a;x<=b;x++)

{

r=0;

y=x;

while(y>0)

{

r=r*10+y%10;

y=y/10;

}

if(r==x)

{ cout<<x;

x=b+1;

}

}

return 0;

}

Se citeste un numar natural n si apoi n numere naturale. Afisati cate dintre ele au suma

cifrelor egala cu numarul de lor de ordine de la citire.

Exemplu: n=6 si numerele 122 101 34 555 23 123

Se va afisa 3 deoarece numerele care respecta regula sunt 101 , 23 si 123.

#include<iostream>

using namespace std;

int main()

{

int n,i,x,s,k=0;

cout<<"n="; cin>>n;

for(i=1;i<=n;i++)

{

cout<<"x="; cin>>x;

s=0;

while(x)

{

s=s+x%10;

x=x/10;

}

if(s==i) k++;

}

cout<<k;

return 0;

}