Sunteți pe pagina 1din 16

Subiecte Atestat 2015 Programare

1. Se citete un numr natural N. S se afieze toate numerele naturale, mai mici


dect N, care au proprietatea de palindrom. Numerele determinate se vor afia unul
dup altul, separate printr-un spaiu.
Exemplu: Pentru N=28 se vor afia numerele 1 2 3 4 5 6 7 8 9 11
22
#include <iostream>
using namespace std;
int n,x,inv,i;
int main()
{cin>>n;
for(i=1;i<=n;i++)
{x=i;inv=0;
while(x!=0){inv=inv*10+x%10;x=x/10;}
if(inv==i) cout<<i<<" ";}}
2. Se citesc dou numere naturale N i X. S se numere cte numere naturale mai mici
strict dect N, au suma cifrelor egal cu X.
Exemplu: PentruN=110 i X=6 se va afia valoarea 8 (6, 15, 24, 33, 42, 51,
60, 105)
#include <iostream>
using namespace std;
int n,x,k,s,i,nr;
int main()
{cin>>n>>x;k=0;
for(i=1;i<=n;i++)
{nr=i;s=0;
while(nr!=0){s=s+nr%10;nr=nr/10;}
if(s==x)k++;}
cout<<k<<" ";}
3. Se citesc dou numere naturale A i B, AB. S se afieze toate numerele prime din
intervalul nchis [A,B]. Numerele determinate se vor afia unul dup altul, separate
printr-un spaiu.
Exemplu: Pentru A=20 i B=45 se vor afia numerele 23 29 31 37 41 43
#include <iostream>
using namespace std;
int a,b,i,d,bb;
int main()
{cin>>a>>b;
for(i=a;i<=b;i++)
{bb=1;
for(d=2;d<=i/2;d++)
if(i%d==0) bb=0;
if(bb==1)cout<<i<<" ";
}}
4. Se citesc dou numere naturale N i X. Afiai separate printr-un spaiu, numerele
naturale mai mici dect N care sunt prime cu X. Numerele determinate se vor afia
unul dup altul, separate printr-un spaiu.
Exemplu: Pentru N= 28 i X=12 se vor afia numerele 1 5 7 11 13 17 19
23 25
#include <iostream>
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

using namespace std;


int n,x,a,b,r,i;
int main()
{cin>>n>>x;
for(i=1;i<=n;i++)
{a=i;b=x;r=a%b;
while(r!=0){a=b;b=r;r=a%b;}
if(b==1) cout<<i<<" ";
}}
5. Se citesc dou numere naturale N i X. Afiai separate printr-un spaiu, numerele
naturale mai mici dect N care au numrul de divizori egal cu X. Numerele
determinate se vor afia unul dup altul, separate printr-un spaiu.
Exemplu: Pentru N=30 i X=3 se vor afia numerele 4 9 25
#include <iostream>
using namespace std;
int n,x,k,d,i;
int main()
{cin>>n>>x;
for(i=1;i<n;i++)
{k=0;
for(d=1;d<=i;d++) if(i%d==0)k++;
if(k==x) cout<<i<<" ";
}}
6. Se citesc din fiierul atestat.in numere naturale cu maxim 4 cifre, din care cel
puin unul este numr prim. Determinai cel mai mare numr prim din fiier i
numrul lui de apariii. Cele dou valori determinate se vor afia n fiierul
atestat.out, separate printr-un spaiu.
Exemplu: atestat.in
atestat.out
12 34 101 5 23 67 90 101 34 1000 101 4
101 3
#include <fstream>
using namespace std;
ifstream f("atestat.in");
ofstream g("atestat.out");
int x,d,bb,mx,k;
int main()
{mx=-32000;k=0;
while(f>>x)
{bb=1;
for(d=2;d<=x/2;d++)
if(x%d==0) bb=0;
if(bb==1)if(mx<x){mx=x;k=1;}
else if(mx==x)k++;
}
g<<mx<<" "<<k;
}
7. Se citesc din fiierul atestat.in numere naturale cu maxim 4 cifre. Determinai
ultimul numr din fiier care are numr maxim de cifre. Numrul determinat se va
afia n fiierul atestat.out.
Exemplu: atestat.in
atestat.out
13 2 100 4 946 34 6 7 908 34
908
#include <fstream>
using namespace std;
ifstream f("atestat.in");
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

ofstream g("atestat.out");
int x,k,mx,nr,y;
int main()
{mx=-32000;
while(f>>x)
{k=0;y=x;
while(x!=0){k++;x=x/10;}
if(mx<=k){mx=k;nr=y;}
}
g<<nr;
}
8. Se citesc din fiierul atestat.in numere naturale distincte, cu maxim 4 cifre. Afiai
toate numerele din fiier care sunt formate numai din cifre de aceeai paritate.
Numerele determinate se vor afia n fiierul atestat.out, separate printr-un spaiu.
Exemplu: atestat.in
atestat.out
12 555 67 135 224 56 979
555 135 224
979
#include <fstream>
using namespace std;
ifstream f(atestat.in);
ofstream g(atestat.out);
int x,y,uc,c,b;
int main()
{ while(f>>x)
{y=x;uc=x%10;x=x/10;b=1;
while(x!=0){c=x%10;x=x/10;if(c%2!=uc%2)b=0;}
if(b==1)g<<y<< ;
}}
9. Se citesc pe rnd numere naturale cu maxim 9 cifre fiecare, din fiierul atestat.in.
S se determine perechile de numere citite consecutiv, care au proprietatea ca
ambele numere din pereche sunt numere prime i diferena lor n modul este 2.
Fiecare pereche determinat se va afia pe cte un rnd n fiierul atestat.out,
numerele din aceeai pereche fiind separate printr-un spaiu.
Exemplu: atestat.in
atestat.out
2 5 3 7 17 19 56 54
53
17 19
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("atestat.in");
ofstream g("atestat.out");
int a,b;
int prim(int x)
{ int b,d;
b=1;
for(d=2;d<=x/2;d++)
if(x%d==0) b=0;
return b;
}
int main()
{ f>>a;
while(f>>b)
{if(prim(a)==1&&prim(b)==1&&abs(a-b)==2)g<<a<<" "<<b<<endl;
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

a=b;}}
10.Se citesc pe rnd numere naturale cu maxim 9 cifre fiecare, din fiierul atestat.in.
S se determine perechile de numere citite consecutiv, care au proprietatea ca
primul numr din pereche reprezint suma cifrelor impare din cel de-al doilea numr
din pereche. Fiecare pereche determinat se va afia pe cte un rnd n fiierul
atestat.out, numerele din aceeai pereche fiind separate printr-un spaiu.
Exemplu: atestat.in
atestat.out
234 45 6 521 5 5 528 17 97881 67 3
6 521
5 5
5 528
17 97881
#include <fstream>
using namespace std;
ifstream f("atestat.in");
ofstream g("atestat.out");
int a,b;
int suma(int x)
{ int s=0;
while(x!=0){if(x%10%2==1)s=s+x%10;x=x/10;}
return s;
}
int main()
{ f>>a;
while(f>>b)
{if(a==suma(b))g<<a<<" "<<b<<endl;
a=b;}}
11.Se d un tablou bidimensional cu n linii i n coloane(1<=n<=100), ale crui
elemente sunt numere ntregi, distincte. Se cere s se afieze cte perechi de
numere prime ntre ele sunt pe diagonala secundar a matricei.
Datele de intrare se vor citi din fiierul date.in astfel:
- pe prima linie se gsete n;
- pe urmtoarele n linii se gsesc elementele matricei
Datele de ieire se vor scrie n fiierul date.out.
Exemplu: pentru fiierul de intrare date.in:
4
1234
5678
9 10 11 12
13 14 15 16
Fiierul date.out va fi 5
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,a[101][101],k;
int cmmdc(int a,int b)
{int r=a%b;
while(r!=0){a=b;b=r;r=a%b;}
return b;}
int main()
{int i,j;
f>>n;
for(i=1;i<=n;i++)
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

for(j=1;j<=n;j++) f>>a[i][j];
k=0;
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(cmmdc(a[i][n-i+1],a[j][n-j+1])==1) k++;
g<<k;
}
12.Se d un tablou bidimensional cu n linii i m coloane(1<=n, m<=100), elemente
ntregi, distincte. Se cere s se determine i s se afieze toate elementele vecine
elementului maxim din matrice.
Datele de intrare se vor citi din fiierul date.in astfel:
- pe prima linie se gsesc 2 numere n i m;
- pe urmtoarele n linii se gsesc elementele matricei
Datele de ieire se vor scrie n fiierul date.out.
Exemplu: pentru fiierul de intrare date.in:
43
33 65 125
44 32 25
58 14 48
47 69 74
Fiierul date.out va fi: 65 32 25
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,m,a[101][101];
int main()
{int i,j,l,c,mx;
f>>n>>m;mx=-32000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{ f>>a[i][j];if(mx<a[i][j]){mx=a[i][j];l=i;c=j;}}
if(l-1>=1 && c-1>=1) g<<a[l-1][c-1]<<" ";
if(l-1>=1) g<<a[l-1][c]<<" ";
if(l-1>=1 && c+1<=m) g<<a[l-1][c+1]<<" ";
if(c-1>=1) g<<a[l][c-1]<<" ";
if(c+1<=m) g<<a[l][c+1]<<" ";
if(l+1<=n && c-1>=1) g<<a[l+1][c-1]<<" ";
if(l+1<=n) g<<a[l+1][c]<<" ";
if(l+1<=n && c+1<=m) g<<a[l+1][c+1]<<" ";
}
13.Se d un tablou bidimensional cu n linii i m coloane(1<=n,m<=100), elemente
ntregi, distincte. Se cere s se determine i s se afieze cel mai mic element prim
de pe liniile impare ale matricei. Dac nu exist numere prime se va afia un mesaj
corespunztor.
Datele de intrare se vor citi din fiierul date.in astfel:
- pe prima linie se gsesc 2 numere n i m;
- pe urmtoarele n linii se gsesc elementele matricei.
Datele de ieire se vor scrie n fiierul date.out.
Exemplu: pentru fiierul de intrare date.in:
43
32 6 17
44 2 25
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

57 11 4
47 61 45
Fiierul date.out va fi: 11
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,m,a[101][101];
int prim(int x)
{ int b,d;
b=1;
for(d=2;d<=x/2;d++)
if(x%d==0) b=0;
return b;
}
int main()
{int i,j,mn,b;
f>>n>>m;mn=32000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++) f>>a[i][j];
b=0;
for(i=1;i<=n;i=i+2)
for(j=1;j<=m;j++)
if(prim(a[i][j])==1)if(mn>a[i][j]){mn=a[i][j];b=1;}
if(b==1) g<<mn;
else g<<"nu exista elemente prime pe liniile impare ";
}
14.Se d un tablou bidimensional cu n linii i n coloane(1<=n<=100), elemente
ntregi, distincte. Se cere s se verifice dac este ptrat magic sau nu. O matrice
este ptrat magic dac sumele de pe fiecare linie, coloan i de pe cele dou
diagonale sunt egale.
Datele de intrare se vor citi din fiierul date.in astfel:
-pe prima linie se gsete n;
-pe urmtoarele n linii se gsesc elementele matricei.
Datele de ieire se vor scrie n fisierul date.out.
Exemplu: pentru fiierul de intrare date.in:
3
438
951
276
Fiierul date.out va fi: Este ptrat magic.
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,a[101][101],mn;
int sumal(int l)
{ int i,s;
s=0;
for(i=1;i<=n;i++) s=s+a[l][i];
return s;
}
int sumac(int c)
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

{ int i,s;
s=0;
for(i=1;i<=n;i++) s=s+a[i][c];
return s;
}
int main()
{int i,j,s,b=1,ss;
f>>n;mn=32000;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) f>>a[i][j];
s=0;
for(i=1;i<=n;i++)s=s+a[i][i];
ss=0;
for(i=1;i<=n;i++)ss=ss+a[i][n-i+1];
if(s!=ss)b=0;
for(i=1;i<=n;i++)if(s!=sumal(i))b=0;
for(i=1;i<=n;i++)if(s!=sumac(i))b=0;
if(b==1) g<<"este patrat magic";
else g<<"nu este patrat magic";
}
15.Se d un tablou bidimensional cu n linii i m coloane(1<=n,m<=100), elemente
ntregi, distincte. Se cere s se determine i s se afieze numrul cel mai mare
care se poate obine din cifrele elementului minim i ale celui maxim din matrice.
Datele de intrare se vor citi din fiierul date.in astfel:
-pe prima linie se gsesc 2 numere n i m;
-pe urmtoarele n linii se gsesc elementele matricei.
Datele de ieire se vor scrie n fiierul date.out.
Exemplu: pentru fiierul de intrare date.in:
43
32 6 17
44 32 25
57 11 4
47 61 45
Fiierul date.out va fi: 641
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,m,a[101][101],v[20],k,aux;
int main()
{int i,j,mn,mx;
f>>n>>m;mn=32000;mx=-32000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{f>>a[i][j];
if(mn>a[i][j])mn=a[i][j];
if(mx<a[i][j])mx=a[i][j];
}
k=0;
while(mn!=0){k++;v[k]=mn%10;mn=mn/10;}
while(mx!=0){k++;v[k]=mx%10;mx=mx/10;}
for(i=1;i<=k-1;i++)
for(j=i+1;j<=k;j++)
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

if(v[i]<v[j]){aux=v[i];v[i]=v[j];v[j]=aux;}
for(i=1;i<=k;i++)g<<v[i];
}
16.Se d un tablou bidimensional cu n linii i n coloane(1<=n<=100), elemente
ntregi, distincte. Se cere s se determine i s se afieze numrul cel mai mare
care se poate obine din cifrele elementului minim i ale celui maxim de pe
diagonala principal. Datele de intrare se vor citi din fiierul date.in astfel:
-pe prima linie se gsete n;
-pe urmtoarele n linii se gsesc elementele matricei
Datele de ieire se vor scrie n fisierul date.out.
Exemplu: pentru fiierul de intrare date.in:
43
3 6 17 23
44 32 25 67
57 11 4 58
47 61 45 89
Fiierul date.out va fi: 983
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,a[101][101],v[20],k;
int main()
{int i,j,mn,mx,aux;
f>>n;mn=32000;mx=-32000;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) f>>a[i][j];
for(i=1;i<=n;i++)
{if(mn>a[i][i])mn=a[i][i];
if(mx<a[i][i])mx=a[i][i];
}
k=0;
while(mn!=0){k++;v[k]=mn%10;mn=mn/10;}
while(mx!=0){k++;v[k]=mx%10;mx=mx/10;}
for(i=1;i<=k-1;i++)
for(j=i+1;j<=k;j++)
if(v[i]<v[j]){aux=v[i];v[i]=v[j];v[j]=aux;}
for(i=1;i<=k;i++)g<<v[i];
}
17.Se d un tablou bidimensional cu n linii i m coloane(1<=n,m<=100), elemente
ntregi, distincte. Se cere s se determine matricea obinutprin eliminarea liniei
care conine elementul minim. Datele de intrare se vor citi din fiierul date.in
astfel:
-pe prima linie se gsesc 2 numere n i m;
-pe urmtoarele n linii se gsesc elementele matricei.
Datele de ieire se vor scrie n fiierul date.out.
Exemplu: pentru fiierul de intrare date.in:
43
33 65 125
44 32 25
58 14 48
47 69 74
Fiierul date.out va fi:
33 65 125
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

44 32 25
47 9 74
#include <fstream>
using namespace std;
ifstream f(date.in);
ofstream g(date.out);
int n,m,a[101][101];
int main()
{int i,j,mn,l;
f>>n>>m;mn=32000;
for(i=1;i<=n;i++)
for(i=1;j<=n;j++)
{ f>>a[i][j];
if(mn>a[i][j]){mn=a[i][j];l=i;}}
for(i=l+1;i<=n;i++)
for(j=1;j<=m;j++) a[i-1][j]=a[i][j];
n--;
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++) g<<a[i][j]<< ;
g<<endl;
}}
18.Se d un tablou bidimensional cu n linii i m coloane(1<=n<=100), elemente
ntregi, distincte. Se cere s se determine matricea obinut prin eliminarea liniei
care conine elementul maxim. Datele de intrare se vor citi din fiierul date.in
astfel:
-pe prima linie se gsesc 2 numere n i m;
-pe urmtoarele n linii se gsesc elementele matricei.
Datele de ieire se vor scrie n fiierul date.out.
Exemplu: pentru fiierul de intrare date.in:
43
33 65 125
44 32 25
58 14 48
47 69 74
Fiierul date.out va fi: 44 32 25
58 14 48
47 9 74
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,m,a[101][101];
int main()
{int i,j,mx,l;
f>>n>>m;mx=-32000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{ f>>a[i][j];
if(mx<a[i][j]){mx=a[i][j];l=i;}}
for(i=l+1;i<=n;i++)
for(j=1;j<=m;j++) a[i-1][j]=a[i][j];
n--;
for(i=1;i<=n;i++)
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

{ for(j=1;j<=m;j++) g<<a[i][j]<<" ";


g<<endl;
}}
19.Se d un tablou bidimensional cu n linii i n coloane(1<=n<=100), elemente
ntregi. Se cere s se afieze valorile comune celor 2 diagonale ale matricei.
Datele de intrare se vor citi din fiierul date.in astfel:
-pe prima linie se gsete n;
-pe urmtoarele n linii se gsesc elementele matricei.
Datele de ieire se vor scrie n fiierul date.out.
Exemplu: pentru fiierul de intrare date.in:
4
1239
10 5 3 5
8 6 7 12
7 2 15 9
Fiierul date.out va fi: 7, 9
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,a[101][101],v[100],w[100],k,b;
int main()
{int i,j,mx,l;
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)f>>a[i][j];
k=0;
for(i=1;i<=n;i++)
{ b=0;
for(j=1;j<=k;j++)
if(a[i][i]==v[j])b=1;
if(b==0){k++;v[k]=a[i][i];w[k]=1;}
}
for(i=1;i<=n;i++)
{ for(j=1;j<=k;j++)
if(a[i][n-i+1]==v[j]){w[j]=2;break;}
}
for(i=1;i<=n;i++)if(w[i]==2)g<<v[i]<<" ";
}
20.Se d un tablou bidimensional cu n linii i n coloane(1<=n<=100) ale crui
elemente sunt numere ntregi, o parte dintre acestea avnd valoarea 0. Se cere s
se mute la sfritul matricei toate coloanele care conin cel puin k elemente nule.
Datele de intrare se vor citi din fiierul date.in astfel:
-pe prima linie se gsesc n i k;
-pe urmtoarele n linii se gsesc elementele matricei.
Datele de ieire se vor scrie n fiierul date.out.
Exemplu: pentru fiierul de intrare date.in:
53
20400
03001
01007
01604
95700
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

Fiierul date.out va fi:


04020
30100
10700
16400
57090
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,a[101][101],v[100],k,b,aux;
int main()
{int i,j;
f>>n>>k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)f>>a[i][j];
for(j=1;j<=n;j++)
for(i=1;i<=n;i++)
if(a[i][j]==0)v[j]++;
for(i=1;i<=n;i++)g<<v[i]<<" ";
g<<endl;
i=1;j=n;
while(i<j)
{ while(v[i]<k&&i<n)i++;
while(v[j]>=k&&j>1)j--;
for(k=1;k<=n;k++){aux=a[k][i];a[k][i]=a[k][j];a[k][j]=aux;}
aux=v[i];v[i]=v[j];v[j]=aux;
g<<i<<" "<<j<<endl;
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)g<<a[i][j]<<" ";
g<<endl;}
}
21.n fiierul Numere.in se afl pe prima linie n, numr natural, 2<=n<=100 i pe
linia a doua n numere naturale de maxim 9 cifre.
Construii fiierul Numere.out care conine numrul de numere din fiierul de
intrare care sunt divizibile cu suma cifrelor lor.
Exemplu:
Numere.in
Numere.ou Explicaie
t
5
1
Un singur numr, 12, este divizibil cu suma cifrelor
12 44 53 67
sale
13
#include <fstream>
using namespace std;
ifstream f(Numere.in);
ofstream g(Numere.out);
int x;
int suma(int x)
{ int s=0,d;
for(d=1;d<=x;d++)
if(x%d==0) s=s+d;
}
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

int main()
{f>>n;
for(i=1;i<=n;i++)
{f>>x;
if(x%suma(x)==0)g<<x<< ;
}}
22.n fiierul Numere.in se afl pe prima linie n, numr natural, 2<=n<=100 i pe
linia a doua n numere naturale de maxim 9 cifre.
Construii fiierul Numere.out care s conincea mai lung secvende numere
din fiierul de intrare care are proprietatea c oricare dou numere alturate n
aceast secven au cel puin un divizor comun diferit de 1.
Exemplu:
Numere.in
Numere.o
Explicaie
ut
9
55 66 12 8
n irul dat sunt 2 secvene (valori aflate
12 44 14 23 55 66 12
2
pe poziii consecutive) care indeplinesc
82
cerinele problemei. Cea mai lung dintre
acestea este secvena55 66 12 8 2 n care
oricare dou numere alturate au un
divizor comun mai mare dect 1 ( cmmdc
(55,66) =11, cmmdc(66, 12)=6, cmmdc
(12,8) =4, cmmdc (8,2) =2)
#include <fstream>
using namespace std;
ifstream f("numere.in");
ofstream g("numere.out");
int v[100],s,d,p,u,n,xx;
int cmmdc(int a,int b)
{int r=a%b;
while(r!=0){a=b;b=r;r=a%b;}
return b;
}
int main()
{f>>n;int i,k=1;p=1;
for(i=1;i<=n;i++)f>>v[i];
for(i=2;i<=n;i++)
{ if(cmmdc(v[i-1],v[i])!=1){k++;u=i;}
else {if(mx<k){mx=k;xx=p;}k=1;p=u=i;}
}
for(i=xx;i<=mx+xx;i++)g<<v[i]<<" ";
}
23.n fiierul Numere.in se afl pe prima linie n, numr natural, 2<=n<=100 i pe
linia a doua n numere naturale de maxim 9 cifre.
Construii fiierul Numere.outcare s conin irul de numere din fiierul de
intrare ordonat cresctor dup numrul de cifre de 2 din scrierea fiecrui numr.
Numerele cu acelai numr de apariii ale cifrei 2 i pstreaz aceeai ordine cu
cea din irul iniial.
Exemplu:
Numere.in
Numere.out
Explicaie
9
44 66 8 12 23 21 2 44 66 8 au cte 0 apariii ale
12 44 922 23 2225 66 21
922 2225
cifrei 2, 12 23 21 2 au cte o
82
apariie a cifrei 2, 922 are 2
cifre de 2 i 2225 are 3 cifre de
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

2. n fiecare grup, numerele


cu acelai numr de cifre de 2
au aceeai ordine cu cea din
fiierul de intrare
#include <fstream>
using namespace std;
ifstream f(Numere.in);
ofstream g(Numere.out);
int v[100],w[100],n;
int nr2(int x)
{int k=0;
while(x!=0){if(x%10==2)k++;
x=x/10;}
return k;
}
void ordonare()
{int i,j,aux;
for(i=1;i<=n-1;i++)
for(i=i+1;i<=n;i++)
if(w[i]>w[j]){aux=w[i];w[i]=w[j];w[j]=aux;
aux=v[i];v[i]=v[j];v[j]=aux;}
}
int main()
{f>>n;int i;
for(i=1;i<=n;i++){f>>v[i];w[i]=nr2(v[i]);
ordonare();
for(i=1;i<=n;i++)cout<<v[i]<< ;
}
24.n fiierul Numere.in se afl pe prima linie n, numr natural, 2<=n<=100 i pe
linia a doua n numere naturale de maxim 9 cifre.
Construii fiierul Numere.outcare s conin irul de numere din fiierul de
intrare care sunt numere prime.
Exemplu:
Numere.in
Numere.out
4
13 2
12 13 922 2
#include <fstream>
using namespace std;
ifstream f("numere.in");
ofstream g("numere.out");
long x;int n,i;
int prim(int x)
{ int b,d;
b=1;
for(d=2;d<=x/2;d++)
if(x%d==0) b=0;
return b;
}
int main()
{f>>n;
for(i=1;i<=n;i++){f>>x;
if(prim(x)==1)g<<x<<" ";}
}
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

25.n fiierul Numere.in se afl pe prima linie n, numr natural, 2<=n<=100 i pe


linia a doua n numere naturale de maxim 9 cifre.
Construii fiierul Numere.out care s conin numrul de numere din fiierul
de intrare care sunt ptrate perfecte.
Exemplu:
Numere.in
Numere.out
Explicaii
5
2
Sunt dou numere ptrate perfecte, 25 i 4
12 13 25 922 4
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("numere.in");
ofstream g("numere.out");
long x;int k,i,n;
int main()
{f>>n;k=0;
for(i=1;i<=n;i++){f>>x;
if(sqrt(x)==floor(sqrt(x))) k++;}
g<<k<<" ";
}
26.n fiierul Numere.in se afl pe prima linie n, numr natural, 2<=n<=100 i pe
linia a doua n numere naturale de maxim 9 cifre.
Construii fiierul Numere.out care s conin numrul de numere din fiierul
de intrare care au cifrele n ordine strict cresctoare de la dreapta la stnga.
Exemplu:
Numere.in
Numere.ou Explicaii
t
4
1
Singurul numr cu proprietatea cerut este
12 9643 922
9643
812
#include <fstream>
using namespace std;
ifstream f("numere.in");
ofstream g("numere.out");
long x;int n,i;
int crescator(int x)
{ int b,c1,c2;
b=1;c1=x%10;x=x/10;
while(x!=0){c2=x%10;x=x/10;if(c1>c2)b=0;}
return b;
}
int main()
{f>>n;int k=0;
for(i=1;i<=n;i++){f>>x;
if(crescator(x)==1)k++;}
g<<k;
}
27.n fiierul Numere.in se afl pe prima linie n, numr natural, 2<=n<=100 i pe
linia a doua n numere naturale de maxim 9 cifre.
Construii fiierul Numere.out care s conin numrul de numere din fiierul
de intrare care au toate cifrele numere pare.
Exemplu:
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

Numere.in

Numere.o
ut
3

Explicaii

5
Sunt 3 numere care sunt
12 9643 822 882
compuse doar din cifre pare:
264
822, 882 i 264
#include <fstream>
using namespace std;
ifstream f("numere.in");
ofstream g("numere.out");
long x;int n,i,k;
int pare(long x)
{ int b,c;
b=1;
while(x!=0){c=x%10;x=x/10;if(c%2==1)b=0;}
return b;
}
int main()
{f>>n;k=0;
for(i=1;i<=n;i++){f>>x;
if(pare(x)==1)k++;}
g<<k<<" ";
}
28.n fiierul Numere.in se afl pe prima linie n, numr natural, 2<=n<=100 i pe
linia a doua n numere naturale de maxim 9 cifre.
Construii fiierul Numere.out care s conin numrul de numere din fiierul
de intrare care sunt compuse doar din cifrele, 2,3,7 i 9, nu neaprat toate acestea
n fiecare dintre numere.
Exemplu:
Numere.in
Numere.ou
Explicaii
t
4
2
Sunt dou numere cu proprietatea cerut, 32 i
32 9643 976
732
732
#include <fstream>
using namespace std;
ifstream f("numere.in");
ofstream g("numere.out");
long x;int n,i,k;
int cifre (long x)
{ int b,c;
b=1;
while(x!=0){c=x%10;x=x/10;if(c!=2&&c!=3&&c!=7&&c!=9)b=0;}
return b;
}
int main()
{f>>n;k=0;
for(i=1;i<=n;i++){f>>x;
if(cifre(x)==1)k++;}
g<<k<<" ";
}
29.n fiierul Numere.in se afl pe prima linie n, numr natural, 2<=n<=100 i pe
linia a doua n numere naturale de maxim 9 cifre.
Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664
Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro

Construii fiierul Numere.out care s conin toate numerele din fiierul de


intrare care sunt palindroame, adic sunt aceleai cu rsturnatele lor.
Exemplu:
Numere.in
Numere.out
Explicaii
4
323 97679
Sunt dou numere egale cu rsturnatele lor
323 9643 97679 723
#include <fstream>
using namespace std;
ifstream f("numere.in");
ofstream g("numere.out");
long x;int n,i;
int palindrom (long x)
{ int inv=0,y=x;
while(x!=0){inv=inv*10+x%10;x=x/10;}
return (y==inv);
}
int main()
{f>>n;
for(i=1;i<=n;i++){f>>x;
if(palindrom(x)==1) g<<x<" ";}
}
30.n fiierul Numere.in se afl pe prima linie n, numr natural, 2<=n<=100 i pe
linia a doua n numere naturale de maxim 9 cifre.
Construii fiierul Numere.out care s conin numrul de numere din fiierul
de intrare care au toate cifrele distincte.
Exemplu:
Numere.in
Numere.out
Explicaii
4
2
Sunt dou numere cu cifrele distincte, 32 i
32 3643 976
976
7723
#include <fstream>
using namespace std;
ifstream f("numere.in");
ofstream g("numere.out");
long x;int n,i,k;
int distincte (int x)
{ int v[10],i,b=1;
for(i=0;i<=9;i++)v[i]=0;
while(x!=0){v[x%10]++;x=x/10;}
for(i=0;i<=9;i++)if(v[i]>=2)b=0;
return b;
}
int main()
{f>>n;k=0;
for(i=1;i<=n;i++){f>>x;
if(distincte(x)==1) k++;}
g<<k<<" ";
}

Str. Mihai Eminescu nr. 11, Constana, cod potal: 900664


Tel.: +40 (0)241 611 913, Fax: +40 (0)241 618 880
www.isjcta.ro e-mail: isj-cta@isjcta.ro