0% found this document useful (0 votes)
79 views21 pages

Probleme Informatica

The document contains 18 coding problems related to number theory and algorithms. Each problem provides sample code to solve a task such as finding the maximum and minimum of a set of numbers, checking if a number is a palindrome, or determining properties of numbers based on the sum of their digits.

Uploaded by

Dobri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
79 views21 pages

Probleme Informatica

The document contains 18 coding problems related to number theory and algorithms. Each problem provides sample code to solve a task such as finding the maximum and minimum of a set of numbers, checking if a number is a palindrome, or determining properties of numbers based on the sum of their digits.

Uploaded by

Dobri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 21

 Problema 3/54

Calcul medie a n note fara minin si maxim.


#include <iostream>
#include <math.h>
using namespace std;
int n,x,Max,Min,i,s,a,b;
float ma;
int main(){
cin>>n;
cin>>x;Max=x;Min=x;s=x;
for(i=2;i<=n;i++){
cin>>x;
if(x==Max)
a=a+1;
else
if(Max<x)
{
Max=x;
a=1;
}
if(x==Min)
b=b+1;
else
if(Max<x){
Max=x;
a=1;
}
s=s+x;
}
ma=(float)(s-a*Max-b*Min)/n;
cout<<ma;
return 0;
}
 Problema 5/54
Pt un sir de nr citit pana la 0 se afiseaza max si min dintre negative, respectiv pozitive.
#include<iostream>
using namespace std;
int x,Minn,Maxn,Minp,Maxp;
int main(){
cin>>x;
Minn=x;
Maxn=x;
Minp=x;
Maxp=x;
cin>>x;
while(x!=0){
if(x>0){
if(x>Maxp)
Maxp=x;
if(x<Minp)
Minp=x;
}
if(x>0){
if(x<Minn)
Minn=x;
if(x>Maxn)
Maxn=x;
}
}
cout<<Minn<<" "<<Maxn<<'\n';
cout<<Minp<<" "<<Maxp;
return 0;
}

 Problema 6/54
Pt un sir de n nr citite se afiseaza max si min dintre negative, respectiv pozitive.
#include<iostream>

using namespace std;

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>

using namespace std ;

int main ( ) {

int n,x,i,Max1,Max2,nr1,nr2;

Max1=-32000;Max2=-36000,nr1=0;nr2=0;cin>>n;

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

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

cout<<Max1<<" "<<nr1<<'\n'<<Max2<<" " <<nr2<<endl;

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>

using namespace std;

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>

using namespace std;

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>

using namespace std;

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

Se citeste un numar natural.Sa se afiseze inversul sumei cifrelor sale.

#include <fstream>

#include <math.h>

using namespace std;

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>

using namespace std;

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

Sa se gaseasca toate numerele de doua cifre care au proprietatea ca inversul patratului

fiecaruia este egal cu patratul inversului.

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

using namespace std;

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>

using namespace std;

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)

cout<<a<<" "<<b<<" "<<c<<'\n';

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>

using namespace std;

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>

using namespace std;

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>

using namespace std;

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>

using namespace std;

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>

using namespace std;

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>

using namespace std;

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>

using namespace std;

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>

using namespace std;

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

You might also like