Sunteți pe pagina 1din 18

Varianta 031 – sub III

1. d
2. 681012108
3. //varianta 031 sub III pr 3
#include<iostream.h>
int i,j,n,m;
float v[100];
float suma(float x[100], int n, int m)
{
float s=0, aux;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(x[i]>x[j])
{
aux=x[i];
x[i]=x[j];
x[j]=aux;
}
for(i=1;i<=m;i++)
s+=x[i];
return s;
}
void main()
{
cout<<"n= ";cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cout<<suma(v,n,3);
}

4. //varianta 031 sub III pr 4


#include<fstream.h>
fstream f("numere.txt", ios::in);
int i,n,x,y,min,max;
void main()
{
f>>n;min=101;max=-1001;
for(i=1;i<=n;i++)
{
f>>x>>y;
if(x>max)
max=x;
if(y<min)
min=y;
}
if(min<max)
cout<<0;
else
cout<<max<<' '<<min;
}
Considerăm capetele intervalului de intersecţie min şi max. Citim extremităţile intervalelor
din fişier şi vom reţine în variabila min valoarea minimă a extremităţilor din dreapta şi în
variabila max, valoarea maximă a extremităţilor din stânga. Dacă min:max atunci
intervalele nu se intersectează.
Varianta 032
1. c
2. 164618
3. //varianta 032 sub III pr 3
#include<iostream.h>
#include<math.h>
int x,i;
int nr_prim(int x)
{
int n=x+1,ok=0;
if(x<=1) return 2;
while(!ok)
{
ok=1;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
ok=0;
if(ok)
return n;
else
n++;
}
}
void main()
{
cout<<"x= ";cin>>x;
cout<<nr_prim(x);
}

4. //varianta 032 sub III pr 4


#include<fstream.h>
#include<math.h>
fstream f("numere.txt",ios::in);
long x;
int n1=100,n2=100;
void main()
{
while(f>>x)
{
if(abs(x)>=10 && abs(x)<=99)
if(n1>x)
{
n2=n1;n1=x;
}
else
if(n2>x)
n2=x;
}
if(n1==100 || n2==100)
cout<<0;
else
cout<<n1<<' '<<n2;
}
Eficienţa programului constă în faptul că nu se folosesc tablouri, iar rezultatul se obţine
printr-o singură parcurgere a elementelor din fişier.
Mai exact se iniţializează două variabile n1 şi n2 cu 100, apoi se citesc pe rând din fişier
numerele şi se schimbă valorile celor două variabile atunci când se întâlnesc numere pare.
Dacă în final s-au schimbat valorile iniţiale ale lui n1 şi n2 atunci se vor afişa noile
valori . Dacă nu se va afişa doar n1.

Varianta 033
1. b
2. re(1)=10; re(14)=3;
3. //var 033 sub III pr 3
#include<fstream.h>
#include<math.h>
fstream f("numere.txt",ios::in);
int v[100],n,i,k,max1,max,j;
int max_cif(int x[100],int n)
{
int max=-1000;
for(i=1;i<=n;i++)
if(abs(x[i])>=100 && abs(x[i])<=999 && max<x[i])
max=x[i];
if(max!=-1000)
return max;
else
return 0;
}
void main()
{
f>>n;
for(k=1;k<=n;k++)
{
for(j=1;j<=n;j++)
f>>v[j];
max1=max_cif(v,n);
if(max1>max)
max=max1;
}
if(max!=-1000)
cout<<max;
else
cout<<0;
}
Neclaritate în enunţ! Se cere metodă eficientă din punct de vedere al utilizării
memoriei, dar funcţia presupune utilizarea vectorului!
Varianta 034
1. a
2. (1,2) (3,4) 95,6) (7,8) (9,10), (11,12)
3. //varianta 034 sub III pr 3
#include<fstream.h>
fstream f("numere.txt",ios::in);
int n,i,j,v[100],max1,m=-9999,d;
int max(int x[],int n)
{
if(x[2]-x[1]<0)
return x[1];
else
return x[n];
}
void main()
{
f>>n;
for(j=1;j<=n;j++)
{
for(i=1;i<=n;i++)
f>>v[i];
d=v[2]-v[1];i=3;
while(v[i+1]-v[i]==d)
i++;
if(i==n+1)
max1=max(v,n);
if(max1>m)
m=max1;
}
if(m!=-9999)
cout<<m;
else
cout<<0;
}
Vom citi pe rand elementele unei linii în vectorul v. Verificam daca elementele sunt în
progresie aritmetică, în caz afirmativ afişăm elementele.
Varianta 035
1. c
2. -2-442
3. //varianta 035 sub III pr 3
#include<fstream.h>
fstream f("numere.in",ios::in);
int n,x,i,aux;
void main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
aux=x;
while(aux>=10)
aux=aux/10;
if(x%10==aux)
cout<<x<<' ';
}
}
4. //varianta 035 sub III pr 4
#include<iostream.h>
int n,v[100],i,j,aux,x,d;
int sum(int x,int d)
{
if(d==x/2+1)
return 0;
else
if(x%d==0)
return d+sum(x,d+1);
else
return sum(x,d+1);
}
void main()
{
cout<<"n= ";cin>>n;
for(i=1;i<=n;i++)
{
cin>>x;
d=2;
v[i]=sum(x,d);
}
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(v[i]>v[j])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
for(i=1;i<=n;i++)
cout<<v[i]<<' ';
}

Varianta 036
1. b
2. 2+3+7
2+4+6
2+10
3. //varianta 036 sub III pr 3
#include<fstream.h>
fstream f("bac.in",ios::in);
int n,x,c[8],i,j,k,nr,aux;
int cifra(int x)
{
if(x==0)
return 0;
while(x)
{
if(x%2==0)
return x%10;
else
x/=10;
}
return -1;
}
void main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
if(cifra(x)!=-1)
c[++j]=cifra(x);
}
for(i=1;i<j;i++)
for(k=i+1;k<=j;k++)
if(c[i]<c[k])
{
aux=c[i];
c[i]=c[k];
c[k]=aux;
}
for(i=1;i<=j;i++)
nr=nr*10+c[i];
cout<<nr;
}

Varianta 037
1. c
2. f(11,7)=-11
3. //varianta 037 sub III pr 3
#include<iostream.h>
int n,k,v[100],i,j,aux;
void main()
{
cout<<"n= ";cin>>n;
cout<<"k= ";cin>>k;
for(i=1;i<=n;i++)
cin>>v[i];
for(j=1;j<=k;j++)
{
aux=v[1];
for(i=1;i<=n;i++)
v[i]=v[i+1];
v[n]=aux;
}
for(i=1;i<=n;i++)
cout<<v[i]<<' ';
}
4. //varianta 037 sub III pr 4
#include<fstream.h>
fstream f("bac.in",ios::in);
int n,i,n1=-1,n2,x;
int nrdiv(int x)
{
int nr=0,d=2;
while(x>1)
{
if(x%d==0)
{
nr++;
while(x%d==0)
x/=d;
}
d++;
}
return nr;
}
void main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
if(nrdiv(x)%2==0)
if(n1==-1)
n1=x;
else n2=x;
}
cout<<n1<<' '<<n2;
f.close();
}
Varianta 038
1. d
2. sc(901324)=19
3. //varianta 038 sub III pr3
#include<iostream.h>
long x;
void del(long &x, int y)
{
long nr=0,p=1;
while(x>0)
{
if(x%10<=y)
nr=nr*10+x%10;
x=x/10;
}
if(nr!=0)
while(nr)
{
x=x*10+nr%10;
nr/=10;
}
else
x=-1;
}
void main()
{
x=336;
del(x,2);
cout<<x;
}
4. //varianta 038 sub III pr 4
#include<fstream.h>
fstream f("bac.in",ios::in);
int i,j,v[100],n;
void inter(int &x,int &y)
{
int aux;
aux=x;x=y;y=aux;
}
void main()
{
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(v[i]>v[j])
inter(v[i],v[j]);
for(i=1;i<=n;i++)
cout<<v[i]<<' ';
f.close();
}
Varianta 039
1. b
2. f(8)=9
3. //varianta 039 sub III pr 3
#include<fstream.h>
int prec,n,x,i,ok;
void main()
{
fstream f("bac.in",ios::in);
f>>n;
ok=1;
for(i=1;i<=n;i++)
{
f>>x;
if(x%2==0)
if(x<prec)
ok=0;
else
prec=x;
}
if(ok)
cout<<"DA";
else
cout<<"NU";
f.close();
}
4. //varianta 039 sub III pr 4
#include<iostream.h>
#include<math.h>
long n;
int pr(long a)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(a%i==0)
return 0;
return 1;
}
void main()
{
cout<<"n= ";cin>>n;
while(n>9)
{
if(pr(n))
cout<<n<<' ';
n=n/10;
}
}
Varianta 040
1. c
2. f(23461)=12
3. //varianta 040 sub III pr 3
#include<fstream.h>
int prec1,prec2=10000,n,x,i,ok;
void main()
{
fstream f("bac.in",ios::in);
f>>n;
ok=1;
for(i=1;i<=n;i++)
{
f>>x;
if(x%2==0)
if(x<prec1)
ok=0;
else
prec1=x;
else
if(x>prec2)
ok=0;
else
prec2=x;
}
if(ok)
cout<<"DA";
else
cout<<"NU";
f.close();
}
4. //varianta 040 sub III pr 4
#include<iostream.h>
#include<math.h>
int n,k;
int pr(int a)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(a%i==0)
return 0;
return 1;
}
int sdiv(int y)
{
int s=1+y,j;
for(j=2;j<=y/2;j++)
if(y%j==0)
s+=j;
return s;
}
void main()
{
cout<<"n= ";cin>>n;
for(k=1;k<n;k++)
if(pr(sdiv(k)))
cout<<k<<' ';
}
Varianta 041
1. a
2. f(7,2)=7; f(35,2)=5;
3. //varianta 041 sub III pr 3
#include<iostream.h>
#include<math.h>
int a[100],n,i;
int dist(int a[100],int n)
{
for(i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(a[i]==a[j])
return 0;
for(i=1;i<n;i++)
if(abs(a[i]-a[i+1])!=1)
return 0;
return 1;
}
void main()
{
cout<<"n= ";cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
cout<<dist(a,n);
}
4. //varianta 041 sub III pr 4
#include<fstream.h>
fstream f("numere.txt",ios::in);
long n;
int v[10],i,j,max;
void main()
{
int i;
f>>n;
for(j=1;j<=n;j++)
{
f>>i;
v[i]++;
}
max=v[0];
for(i=1;i<=9;i++)
if(max<=v[i])
{
max=v[i];
j=i;
}
cout<<j<<' '<<max;
f.close();
}
Considerăm vectorul v ale cărui elemente le iniţializăm cu 0. Citim din fişier numărul de
cifre, apoi cele n cifre. Pentru fiecare cifră I pe care o citim vom incrementa elementul
v[i]. După parcurgerea fişierului vom determina maximul din vectorul v şi vom afişa
poziţia pe care apare valoarea maximă şi valoarea maximă.
Varianta 042
1. a
2. f(7)=6; f(100)=96
3. //varianta 042 sub III pr 3
#include<iostream.h>
#include<math.h>
int a[100],n,i,k;
long p(int a[100],int n, int k)
{
long s=0;
int aux;
for(i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(a[i]<a[j])
{
aux=a[i];a[i]=a[j];a[j]=aux;
}
for(i=1;i<=k;i++)
s+=a[i];
return s;
}
void main()
{
cout<<"n= ";cin>>n;
cout<<"k= ";cin>>k;
for(i=1;i<=n;i++)
cin>>a[i];
cout<<p(a,n,k);
}
4. //varianta 042 sub III pr 4
#include<fstream.h>
fstream f("numere.txt",ios::in);
long n;
long v[100],i,x;
void main()
{
int i;
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
v[x]++;
}
for(i=0;i<=99;i++)
if(v[i]==1)
cout<<i<<' ';
f.close();
}
Considerăm vectorul v ale cărui elemente le iniţializăm cu 0. Citim din fişier numărul de
numere, apoi cele n numere de maxim 2 cifre. Pentru fiecare număr x citit din fişier îl
incrementăm pe v[x]. Parcurgem fişierul şi vom afişa poziţia I a elementelor pt care
v[i]=1.
Varianta 043
1. a
2. f(3)=6;f(10)=20;
3. long p(int a[100], int n)
{
long s=0;
int i;
for(i=1;i<=n;i++)
if(a[i]%2==1)
s+=a[i];
return s;
}
4. //var 043 sub III pr 4
#include<fstream.h>
fstream f("numere.txt",ios::in);
long n,i;
int v[10],x;
void main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
v[x]++;
}
for(i=9;i>=0;i--)
{
while(v[i])
{
cout<<i;
v[i]--;
}
}
}
Considerăm vectorul v ale cărui elemente le iniţializăm cu 0. Vectorul v va contoriza
apariţia fiecărei cifre în fişier. Citim din fişier numărul de cifre, apoi cele n cifre. Pentru
fiecare cifră x pe care o citim vom incrementa elementul v[x]. După parcurgerea fişierului
vom afişa cifrele numărului de la 9 la 0, ţinând cont de numărul de apariţii al fiecărei
cifre.

Varianta 044
1. a
2. f(5,10)=7
3. //varianta 044 sub III pr 3
#include<iostream.h>
#include<math.h>
int n,x,nr,i;
void main()
{
cout<<"n= ";cin>>n;
for(i=1;i<=n;i++)
{
cin>>x;
if(sqrt(x)*sqrt(x)==x)
nr++;
}
cout<<nr;
}
4. //varianta 044 sub III pr 4
#include<fstream.h>
fstream f("numere.txt",ios::in);
long n,i;
int v[10],x;
void main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
while(x>0)
{
v[x%10]=1;
x/=10;
}
}
for(i=0;i<=9;i++)
if(v[i]==1)
cout<<i<<' ';
}
Considerăm vectorul v ale cărui elemente le iniţializăm cu 0. În vectorul v vom marca
apariţia fiecărei cifre în fişier. Citim din fişier numărul de numere, apoi cele n numere.
Pentru fiecare număr x pe care îl citim vom extrage cifrele şi vom marca în v apariţia
cifrelor. După parcurgerea fişierului vom afişa indicii elementelor pentru care v[i]=1.

Varianta 045
1. a
2. f(4)=3; f(11)=5
3. //varianta 045 sub III pr 3
#include<iostream.h>
int i,j,ok,n;
float x[100];
void main()
{
cout<<"n= ";cin>>n;
for(i=1;i<=n;i++)
cin>>x[i];
for(i=1;i<=n;i++)
{
ok=1;
for(j=1;j<=n;j++)
if(i!=j)
if(x[i]==x[j])
ok=0;
if(ok)
cout<<x[i]<<' ';
}
}
4. //varianta 045 sub III pr 4
#include<fstream.h>
fstream f("numere.txt",ios::in);
long n,i,x;
int v[100];
void main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
v[x]++;
}
for(i=0;i<=99;i++)
while(v[i]!=0)
{
cout<<i<<' ';
v[i]--;
}
}
Numerele formate din cel mult 2 cifre sunt 0 …99, deci este suficient un vector v cu 100
elemente. Fiecare element v[i] memoreaza valoarea 1 dacă I apare în fişier. In final sunt
afişate în ordine crescătoare numerele de la 0 la 99.
Varianta 046
1. c
2. f(100)=10100
3. //varianta 046 sub III pr 3
#include<fstream.h>
fstream f("bac.txt",ios::in);
int n,x,k,j;
int nr_div(int x)
{
int nr=2;
for(int i=2;i<=x/2;i++)
if(x%i==0)
nr++;
return nr;
}
void main()
{
f>>n;
cout<<"k= ";cin>>k;
for(j=1;j<=n;j++)
{
f>>x;
if(nr_div(x)>=k)
cout<<x<<' ';
}
}
4. //varianta 046 sub III pr 4
#include<iostream.h>
int n,i,sc,nc;
void cifre(long nr, int &nc, int&sc)
{
nc=0;sc=0;
while(nr)
{
nc++;
sc+=nr%10;
nr/=10;
}
}
int sub(long x)
{
long aux=x;
float ma;
cifre(x,nc,sc);
for(i=1;i<=nc;i++)
{
ma=(float)(sc-aux%10)/(nc-1);
if(aux%10==ma)
return 1;
aux/=10;
}
return 0;
}
void main()
{
cout<<"n= ";cin>>n;
cout<<sub(n);
}
Varianta 047
1. d
2. C 3 * C8  21 * 8  168
2 5

3. //varianta 047 sub III pr 3


#include<fstream.h>
fstream f("bac.txt",ios::in);
int n,x,k,aux,ok,i;
int cif(int x,int k)
{
while(x)
{
if(x%10==k)
return 1;
x/=10;
}
return 0;
}
void main()
{
f>>n;
cout<<"k= ";cin>>k;
for(i=1;i<=n;i++)
{
f>>x;
if(cif(x,k))
{
cout<<x<<' ';
ok=1;
}
}
if(!ok)
cout<<"NU";
}
4. //varianta 047 sub III pr 4
#include<iostream.h>
int n,v[25],i,max,s;
void cif(long nr,int &s)
{
s=0;
while(nr)
{
s+=nr%10;
nr/=10;
}
}
void main()
{
cout<<"n= ";cin>>n;
for(i=1;i<=n;i++)
{
cin>>v[i];
cif(v[i],s);
if(max<s)
max=s;
}
for(i=1;i<=n;i++)
{
cif(v[i],s);
if(max==s)
cout<<v[i]<<' ';
}
}
Varianta 048
1. c
2. M1, M3, M2, M4
3. //varianta 048 sub III pr 3
#include<iostream.h>
int cmdiv(int x,int y)
{
int r;
while(x%y)
{
r=x%y;
x=y;
y=r;
}
return r;
}
int a,b,n,v[50],i,j,aux;
void main()
{
cout<<"a= ";cin>>a;
cout<<"b= ";cin>>b;
cout<<"n= ";cin>>n;
if(a>b)
{
aux=a;a=b;b=aux;
}
for(i=a;i<=b;i++)
if(cmdiv(n,i)==1)
v[++j]=i;
for(i=1;i<=j;i++)
cout<<v[i]<<' ';
}
4. //varianta 048 sub III pr 4
#include<fstream.h>
fstream f("bac.in",ios::in), g("bac.out",ios::out);
int n,a[10000],i,x;
void main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
a[x]++;
}
for(i=0;i<=9999;i++)
if(a[i]==1)
cout<<i<<' ';
}
Varianta 049
1. c
2. 4
3. //varianta 049 sub III pr 3
#include<iostream.h>
int a,b,n,aux,i;
void main()
{
cout<<"a= ";cin>>a;
cout<<"b= ";cin>>b;
cout<<"n= ";cin>>n;
if(a>b)
{
aux=a;a=b;b=aux;
}
if(a%n==0)
i=a/n;
else
i=a/n+1;
if(i*n>b)
cout<<"NU";
else
while(n*i<=b)
{
cout<<i*n<<' ';
i++;
}
}
4. //varianta 049 sub III pr 4
#include<fstream.h>
fstream f("bac.txt",ios::in);
int b;
void cmax(int a,int &b)
{
b=0;
while(a)
{
if(b<a%10)
b=a%10;
a/=10;
}
}
void main()
{
int n,max=0;
while(f>>n)
{
cmax(n,b);
if(max<b)
max=b;
}
cout<<max;
f.close();
}
Varianta 050
1. b
2. 332321
3.

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