Probleme Informatica
Probleme Informatica
Problema 6/54
Pt un sir de n nr citite se afiseaza max si min dintre negative, respectiv pozitive.
#include<iostream>
int n,x,Minn,Maxn,Minp,Maxp;
int main(){
cin>>n;
cin>>x;
Minn=x;
Maxn=x;
Minp=x;
Maxp=x;
cin>>x;
for(i=2;i<=n;i++){
cin>>x;
if(x>0){
if(Minp>x)
Minp=x;
if(Maxp>x)
Maxp=x;
if(x<0){
if(Minn>x)
Minn=x;
if(Maxn<x)
Maxn=x;
cout<<Minn<<" "<<Maxn<<'\n';
cout<<Minp<<" "<<Maxp;
return 0;
Problema 7/54
Se citesc n nr. Sa se afiseze primele doua valori maxime si de cate ori apar in sir.
# include <iostream>
int main ( ) {
int n,x,i,Max1,Max2,nr1,nr2;
Max1=-32000;Max2=-36000,nr1=0;nr2=0;cin>>n;
cin>>x;
if(x>Max1)
{Max2= Max1;
nr2=nr1;
nr1=1;
Max1=x;}
else if(x==Max1)
nr1=nr1+1;
else if (Max2<x)
Max2=x;
nr2=1;
else if(x==Max2)
nr2++;
return 0;
Problema 7/59
Se citesc n nr. Sa se afiseze pt fiecare nr citit, numarul obtinit prin eliminarea cifrelor de 0
#include <fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
int n,i,x,aux,a,c,c2,m;
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>x;
aux=x;
a=0;
m=0;
while(aux>0){
c=aux%10;
aux/=10;
if(c!=0)
a=a*10+c;
}
aux=a;
while(aux>0){
c2=aux%10;
aux/=10;
m=m*10+c2;
}
fout<<m<<" ";
}
fin.close();
fout.close();
return 0;
}
Problema 8/59
Sa se afiseze toate numerele care sunt palindrom si care apartin intervalului [a,b]. Valorile pentru a si b se citesc de la tastatura.
#include <fstream>
ifstream fin("date.in");
ofstream fout("date.out");
int a,b,n,r,aux,k;
int main(){
fin>>a;
fin>>b;
for(n=a;n<=b;n++){
r=0;
aux=n;
do{
k=aux%10;
aux/=10;
r=r*10+k;
}while(aux>0);
if(n==r)
fout<<n<<" ";
fin.close();
fout.close();
return 0;
Problema 9/59
Se citeste un sir de n numere naturale.Sa se afiseze cele care sunt palindroame.
#include <fstream>
ifstream fin("date.in");
ofstream fout("date.out");
int n,i,x,r,k,aux;
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>x;
r=0;
aux=x;
do{
k=aux%10;
aux/=10;
r=r*10+k;
}while(aux>0);
if(x==r)
fout<<x<<" ";
fin.close();
fout.close();
return 0;
Problema 10/59
Sa se afiseze toate numerele din intervalul [a,b] care au suma cifrelor un numar par.
Valorile pentru a si b se citesc de la tastatura.
#include <fstream>
ifstream fin("date.in");
ofstream fout("date.out");
int a,b,k,s,aux,c;
int main(){
fin>>a;
fin>>b;
for(k=a;k<=b;k++){
s=0;
aux=k;
while(aux>0){
c=aux%10;
aux/=10;
s+=c;
if(s%2==0)
fout<<k<<" ";
}
fin.close();
fout.close();
return 0;
Problema 11/59
#include <fstream>
#include <math.h>
ifstream fin("date.in");
ofstream fout("date.out");
int n,aux,s,c;
float i;
int main(){
fin>>n;
aux=n;
while(aux>0){
c=aux%10;
aux/=10;
s+=c;
i=(float)1/s;
fout<<i;
fin.close();
fout.close();
return 0;
Problema 12/59
Se citesc de la tastatura un numar k diferit de 0 si un sir de numere intregi,pana la intalnirea numarului 0.Sa se afiseze cate numere din sir au suma
cifrelor k.
#include <fstream>
ifstream fin("date.in");
ofstream fout("date.out");
int k,x,nr,s,c,aux;
int main(){
fin>>k;
fin>>x;
nr=0;
while(x!=0){
s=0;
aux=x;
while(aux>0){
c=aux%10;
aux/=10;
s+=c;
if(s==k)
nr++;
fin>>x;
fout<<nr;
fin.close();
fout.close();
return 0;
Problema 13/59
#include <fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
int x,p,aux,rp,rx,c,d;
int main(){
for(x=10;x<=99;x++){
p=x*x;
aux=p;
rp=0;
while(aux>0){
c=aux%10;
aux/=10;
rp=rp*10+c;
}
rx=0;
aux=x;
while(aux>0){
d=aux%10;
aux/=10;
rx=rx*10+d;
}
if(rp==rx*rx)
fout<<x<<" ";
}
fin.close();
fout.close();
return 0;
}
Problema 14/59
Se introduce de la tastatura un sir de n numere naturale. Sa se afiseze catul sir restul impartirii dintre suma numerelor si suma cifrelor numerelor.
#include <fstream>
ifstream fin("date.in");
ofstream fout("date.out");
int n,s,x,aux,S,i,c;
int main(){
fin>>n;
s=0;
for(i=1;i<=n;i++){
fin>>x;
s+=x;
aux=s;
while(aux>0){
c=aux%10;
aux/=10;
S+=c;
fout<<"catul="<<s/S<<'\n';
fout<<"restul="<<s%S;
fin.close();
fout.close();
return 0;
Problema 15/59
Se citeste un sir de numere pana la introducerea nr 0. Sa se afiseze toate tripletele de numere consecutive cu proprietatea ca al doilea si al
treilea numar sunt egale cu catul, respectiv cu restul dintre impartirea primului nr la suma cifrelor sale.
#include <iostream>
int a,b,c,n,s;
int main()
cin>>a;
cin>>b;
while(a!=0&&b!=0){
cin>>c;
s=0;
n=a;
while(n!=0){
s+=n%10;
n/=10;
if(b==a/s&&c==a%s)
a=b;
b=c;
return 0;
Problema 16/59
Sa se afiseze toate nr mai mici decat n care sunt egale cu suma patratelor cifrelor lor.
#include <fstream>
ifstream fin("date.in");
ofstream fout("date.out");
int n,i,aux,c,s;
int main(){
fin>>n;
for(i=1;i<=n;i++){
aux=i;
s=0;
while(aux>0){
c=aux%10;
aux/=10;
s+=c*c;
if(i==s)
fout<<i<<" ";
fin.close();
fout.close();
return 0;
Problema 17/59
Se citeste un nr k<=9 si un sir de nr pana la citirea nr 0. Sa se afiseze toate perechile de nr introduse consecutiv care au proprietatea ca au
acelasi nr de aparitii ale cifrei k in patratul lor.
#include<iostream>
int main(){
int x,k,y,c,nr,auxnr=-1,aux;
cin>>k
fin>x;
while(x!=0){
nr=0;
aux=x*x;
while(aux!=0){
c=aux%10;
aux/=10;
if(c==k)
nr++;
if(auxnr==nr){
cout<<y<<" "<<x;
cout<<'\n';
auxnr=nr;
y=x;
cin>>x;
return 0;
Problema 18/59
Se citeste un sir de numere pana la introducerea nr 0. Sa se afiseze toate perechile de numere consecutive cu proprietatea ca suma cifrelor
primului nr este para, iar suma cifrelor celui de-al doilea este impara.
#include <iostream>
using namespace std;
int main()
{
int x,y,aux,s1=0,s2=0;
cin>>x;
while(x!=0)
{ s1=0;aux=x;
while(aux>0)
{
s1=s1+aux%10;
aux=aux/10;
}
cin>>y;
aux=y;
s2=0;
while(aux>0)
{
s2=s2+aux%10;
aux=aux/10;
}
if(s1%2==0 && s2%2==1)
cout<<x<<" "<<y<<" "<<endl;
x=y;
}
return 0;
}
Problema 19/59
Se citeste un nr n. Sa se afiseze nr obtinut prin eliminarea cifrei din mijloc daca n este impar, respectiv a celor doua din mijloc daca n are nr par
de cifre.
#include<iostream>
using namespace std;
int n,aux,x,y,z,k,p,i;
int main(){
fin>>n;
aux=n;
k=0;
while(aux>0){
aux/=10;
k++;
}
p=1;
for(i=1;i<=k/2;i++)
p*=10;
if(k%2==1){
y=n/(p*10);
z=n%p;
x=y*p+z;
else
y=n/(p*10);
z=n%(p/10);
x=y*(p/10)+z;
fout<<x;
fin.close();
fout.close();
return 0;
Problema 20/59
Sa se calculeze suma tuturor nr formate din cifre impare distinct.
#include <fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
int nr1,nr3,nr5,nr7,nr9,aux,s,ok,c,i;
int main(){
s=0;
for(i=1;i<=97531;i++){
aux=i;
ok=0;
nr1=0;
nr3=0;
nr5=0;
nr7=0;
nr9=0;
while(aux!=0){
c=aux%10;
aux/=10;
if(c==1)
nr1++;
if(c==3)
nr3++;
if(c==5)
nr5++;
if(c==7)
nr7++;
if(c==9)
nr9++;
if(c%2==0)
ok=1;
}
if(nr1<=1&&nr3<=1&&nr5<=1&&nr7<=1&&nr9<=1&&ok==0)
s+=i;
}
fout<<s;
fin.close();
fout.close();
return 0;
}
Problema 1/61
Se citesc n si k. Sa se afiseze toate perechile de nr mai mici decat n al caror c.m.m.d.c este k
#include <fstream>
ifstream fin("date.in");
ofstream fout("date.out");
int n,k,a,b,x,y,d;
int main(){
fin>>n;
fin>>k;
for(a=2;a<=n;a++)
for(b=2;b<=n;b++){
x=a;
y=b;
while(x!=y)
if(x>y)
x=x-y;
else
y=y-x;
d=x;
if(d==k)
fout<<a<<" "<<b<<'\n';
fin.close();
fout.close();
return 0;
Problema 2/61
Sa se scrie algoritmul de calcul a c.m.m.d.c. si c.m.m.m.c a 3 nr introduce de la tastatura.
#include <fstream>
ifstream fin("date.in");
ofstream fout("date.out");
int n,x,y,k,d,i;
int main(){
fin>>n;
fin>>k;
x=k;
for(i=2;i<=n;i++){
fin>>k;
y=k;
while(x!=y)
if(x>y)
x=x-y;
else
y=y-x;
fout<<x;
fin.close();
fout.close();
return 0;
}
Problema 3/64
Sa se afiseze toate nr mai mici decat n care sunt prime cu n
#include <fstream>
ifstream fin("date.in");
ofstream fout("date.out");
int n,x,y,i,auxy;
int main(){
fin>>n;
y=n;
for(i=1;i<=n;i++){
x=i;
auxy=y;
while(x!=auxy)
if(x>auxy)
x=x-auxy;
else
auxy=auxy-x;
if(x==1)
fout<<i<<" ";
fin.close();
fout.close();
return 0;
Problema 1/64
Se citesc n nr. Sa se afiseze toate nr prime
#include <iostream>
int main()
int n,i,x,d,nr;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++){
cin>>x;
nr=0;
for(d=1;d<=x;d++){
if(x%d==0)
nr++;}
if(nr==2)
cout<<x;
return 0;
Problema 2/65
Sa se afiseze primele n nr prime
#include <fstream>
ifstream fin("date.in");
ofstream fout("date.out");
int i,n,nr,k;
int main(){
fin>>n;
for(i=1;i<=n;i++){
nr=1;
for(k=1;k<=i/2;k++)
if(i%k==0)
nr++;
if(nr==2)
fout<<i<<" ";
fin.close();
fout.close();
return 0;
METODA 2
#include <iostream>
int nrgasite=0;
int nrcurent=2;
int n;
cin>>n;
while(nrgasite<n){
bool isprim=true;
for(int j=2;j<=(nnrcurent/2)+1;j++)
if(nrcurent%j==0)
isprim=false;
break;
if(isprim)
cout<<"Numarul"<<nrcurent<<"este prim"
nrcurent++;
cout<<'\n';
return 0;
Problema 3/65
Sa se afiseze primele n nr prime care au suma cifrelor mai mica decat un nr m
#include <iostream>
using namespace std;
int main()
{
int n,nr,d,i,nrdi,m,c,sc,aux;
cout<<"n="; cin>>n;
cout<<"m=";cin>>m;
nr=0;
i=2;
while(nr<n){
nrdi=0;
sc=0;
aux=i;
for(d=1;d<=i;d++){
if(i%d==0)
nrdi++;
}
while(aux!=0){
c=aux%10;
aux/=10;
sc=sc+c;
}
if(nrdi==2&&sc<m){
cout<<i<<" ";
nr++;
}
i++;
}
return 0;
}
Problema 4/65
Sa se afiseze toate nr prime de 4 cifre care au inversul tot nr prim
#include <iostream>
using namespace std;
int main()
{
int n,i,nrdn,nrdi,aux,a,c;
for(n=1000;n<=9999;n++){
nrdn=0;
for(a=1;a<=n;a++){
if(n%a==0)
nrdn++;
}
aux=n;
i=0;
while(aux){
c=aux%10;
i=i*10+c;
aux/=10;
}
nrdi=0;
for(a=1;a<=i;a++){
if(i%a==0)
nrdi++;
}
if(nrdn==2&&nrdi==2)
cout<<n<<" ";
}
return 0;
}
Problema 5/65
Sa se afiseze descompunerea unui nr par>2 intr-o suma de nr prime
#include <iostream>
using namespace std;
int main()
{
int n,a,b,nrda,nrdb,j,k;
cout<<"n=";cin>>n;
for(a=2;a<=n;a++){
for(b=3;b<=n;b++){
nrda=0;
for(j=1;j<=a;j++)
if(a%j==0) nrda++;
nrdb=0;
for(k=1;k<=b;k++)
if(b%k==0) nrdb++;
if(nrda==2&&nrdb==2&&a+b==n&&a<=b)
cout<<n<<"="<<a<<"+"<<b<<endl;
}
}
return 0;
}
Problema 6/65
Sa se afiseze primele n perechi de nr prime gemene(b-a=2 si b si a prime)
#include <iostream>
using namespace std;
int main()
{
int n,nr,a,b,nrda,nrdb,j,k;
cout<<"n=";cin>>n;
a=3;b=5;nr=0;
while(nr<n){
nrda=0;
for(j=1;j<=a;j++)
if(a%j==0) nrda++;
nrdb=0;
for(k=1;k<=b;k++)
if(b%k==0) nrdb++;
if(nrda==2&&nrdb==2&&b-a==2){
cout<<"("<<a<<";"<<b<<")"<<endl;
nr++;
}
a++; b++;
}
return 0;
}
Problema 7/65
Să se afișeze nr mai mari ca 2 care au proprietatea ca toate nr strict mai mici decat ele, care sunt prime cu ele sunt si nr prime.
#include <iostream>
using namespace std;
int main()
{
int k=3,n,i,j,aux,aux2,nrnumere,nrdiv,d,gasit;
cout<<"n=";
cin>>n;
nrnumere=0;
while(nrnumere<n){
gasit=0;
for(i=2;i<k;i++){
aux=i;
aux2=k;
while(aux!=aux2){
if(aux>aux2)
aux=aux-aux2;
else
aux2=aux2-aux;
}
d=aux;
nrdiv=1;
for(j=1;j<=i/2;j++){
if(i%j==0)
nrdiv++;
}
if(d==1&&nrdiv!=2)
gasit=1;
}
if(gasit==0){
cout<<k<<" ";
nrnumere++;
}
k++;
}
return 0;
}
Problema 8 /65
Să se afișeze cel mai mare număr prim,mai mic decât un număr dat n.
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n,ok,k,d,nr;
cout<<"n=";
cin>>n;
ok=0;
for(k=n;ok==0;k--){
nr=1;
for(d=2;d<=sqrt(k);d++)
if(k%d==0)
nr++;
if(nr==1){
ok=1;
cout<<k;
}
}
return 0;
}
Problema 9 /65
Să se afișeze cel mai mic număr prim,mai mare decât un număr dat n.
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n,ok,k,d,nr;
cout<<"n=";
cin>>n;
ok=0;
for(k=n;ok==0;k++){
nr=1;
for(d=2;d<=sqrt(k);d++)
if(k%d==0)
nr++;
if(nr==1){
ok=1;
cout<<k;
}
}
return 0;
}
Problema 10 /65
Să se afișeze numerele prime imediat vecine unui număr n.
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n,ok,a,b,d,nr;
cout<<"n=";
cin>>n;
ok=0;
for(a=n-1;ok==0;a--){
nr=1;
for(d=2;d<=sqrt(a);d++)
if(a%d==0)
nr++;
if(nr==1){
ok=1;
cout<<a<<" ";
}
}
ok=0;
for(b=n+1;ok==0;b++){
nr=1;
for(d=2;d<=sqrt(b);d++)
if(b%d==0)
nr++;
if(nr==1){
ok=1;
cout<<b;
}
}
return 0;
}
Problema 11/65
Se citește un număr natural k de la tastatură.Să se afișeze toate numerele n care au k cifre și următoarele proprietăți:a)n-1 și n+1 sunt numere
prime;
b)suma cifrelor lui n este tot număr prim.
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int k,n,c,aux,s,ok,i;
cout<<"k=";
cin>>k;
for(n=pow(10,k-1);n<=pow(10,k)-1;n++){
s=0;
aux=n;
ok=0;
while(aux!=0){
c=aux%10;
s+=c;
aux=aux/10;
}
for(i=2;i<=sqrt(s)&&ok==0;i++)
if(s%i==0)
ok=1;
if(ok==0){
for(i=2;i<=sqrt(n-1)&&ok==0;i++)
if((n-1)%i==0)
ok=1;
if(ok==0){
for(i=2;i<=sqrt(n+1)&&ok==0;i++)
if((n+1)%i==0)
ok=1;
if(ok==0)
cout<<n<<" ";
}
}
}
return 0;
}
Problema 2/68
Sa se determine toate nr nat perfecte mai mici decat n
#include <iostream>
using namespace std;
int n,x,s,k;
int main()
{
cout<<"n="; cin>>n;
for(x=1; x<=n; x++){
s=0;
for(k=1; k<=x-1; k++)
if(x%k==0)
s+=k;
if(s==x)
cout<<s<<" "<<endl;
}
return 0;
}
Problema 3/68
Sa se rezolve in N ecuatia x2-y2=0 unde k natural se citeste.
#include <iostream>
using namespace std;
int main()
{
int k,x,y,a,b;
cout<<"k=";
cin>>k;
for(a=1;a<=k/2;a++)
if(k%a==0){
b=k/a;
x=(a+b)/2;
y=(b-a)/2;
cout<<x<<" "<<y;
}
return 0;
}
Problema 4/68
Se da nr p prim. Se citesc nr pana la intalnirea lui 0. Sa se determine n maxim astfel incat p n sa divida produsul nr citite
#include <iostream>
using namespace std;
int x,p,nr;
int main(){
cin>>p;
cin>>x;
nr=0;
do{
while(x%p==0){
nr++;
x/=p;
}
cin>>x;
}
while(x!=0);
cout<<nr<<endl;
return 0;
}