Sunteți pe pagina 1din 25

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

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, ... .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; }

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"); return 0; }

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

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

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

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: 35 57 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; }

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

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

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

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 35 57 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; }

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

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

Se citeste un numar natural n si apoi n numere naturale. Afisati numerele care au suma cifrelor egala cu suma cifrelor primului numar citit. Ex: se citesc numerele 7 23 78 14 30 32 8 50 se vor afisa 14 32 50

#include <iostream> using namespace std;

int main() { int i,n,x,y,z,scx,scy; cin>>n; cin>>x; scx=0; while(x>0) {scx=scx+x%10; x=x/10;} for(i=1;i<n;i++) { cin>>y; scy=0; z=y; while(y>0) {scy=scy+y%10; y=y/10;} if(scx==scy) cout<<z<<" "; } return 0; }

Se citeste un numar natural n si apoi n numere naturale. Afisati cate dintre numerele citite au rasturnatul egal cu primul numar citit. Ex: se citesc numerele 7 231 78 132 30 132 8 132 se va afisa 3

int main() { int i,n,x,y,k=0,r; cin>>n; cin>>x; for(i=1;i<n;i++) { cin>>y; r=0; while(y>0) {r=r*10+y%10; y=y/10;} if(r==x) k++; } cout<<k; return 0; }

S-ar putea să vă placă și