Sunteți pe pagina 1din 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++];

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);

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;

}

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,

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.

.Pentru un

#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;

{

}

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;

}

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");

}

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;

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];

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");

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");

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;

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++)

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;

}

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

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;

}

}

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;

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++)

}

{

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;

}

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;

}

}

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.

#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.

#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)

{

}

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;

}

}

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()

{

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;

}

}

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

#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>

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;

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;

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<<" ";

}

}

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;

}