Iasi 2016

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Iasi 2016

Sub 1
1.B
2.a)7
b) 10,5
c)91

Sub 2
1.B 2.D
3.
a) se observa ca pentru orice pereche de litere alaturate ,dupa aplicarea transformarilor, se
va ajunge la un sir caruia i se va aplica o transformare cu rang mai mic decat transformarea
precedenta. Aplicand succesiv aceste reguli se va ajunge la o pereche ‘aaa’ .
in final sirul va contine doar litere de ‘a’ indifferent de ordinea aplicarii transformarilor.
b)
#include <iostream>
#include<vector>
#include<queue>
#include<algorithm>
#include <cmath>
using namespace std;
//ifstream f("fisier.in");
//ofstream g("fisier.out");
char s[101];
int l;
int main()
{
cin.get(s,101);
int ok=1;
int l=strlen(s);
for(int i=0;i<l;++i)
if(s[i]!='a' && s[i]!='b')
{ok=0;break;}
if(!ok)
cout<<"Date invalide";
else
{
int nr=0;
int bun=0;
while(!bun)
{
bun=1;
for(int i=0;i<=l-3;++i)
if(s[i]=='a' && s[i+1]=='a' && s[i+2]=='b')
s[i+2]='a',++nr;
else
if(s[i]=='a' && s[i+1]=='b' && s[i+2]=='a')
swap(s[i+1],s[i+2]),++nr;
else
if(s[i]=='a' && s[i+1]=='b' &&
s[i+2]=='b')
s[i+2]='a',++nr;
else
if(s[i]=='b' && s[i+1]=='a' &&
s[i+2]=='a')
s[i+1]='a',s[i+1]=s[i+2]='b',++nr;
else
if(s[i]=='b' && s[i+1]=='a' &&
s[i+2]=='b')
s[i]=s[i+2]='a',s[i+1]='b',+
+nr;
else
if(s[i]=='b' && s[i+1]=='b' &&
s[i+2]=='a')
s[i+1]='a',++nr;
else
if(s[i]=='b' &&
s[i+1]=='b' & s[i+2]=='b')
s[i+1]='a',++nr;

for(int i=0;i<l;++i)
if(s[i]=='b')
{bun=0;break;}
}
cout<<nr;
int bun1=1;
for(int i=0;i<l;++i)
if(s[i]=='b')
{bun1=0;break;}
}
return 0;
}
/*
* aab → aaa, r2: aba → aab, r3: abb → aba, r4: baa → abb, r5:
bab → aba, r6: bba → baa, bbb-> bab
*/

Sub3
1.A
2.91
3.a)
b)
int cerinta(int n,int m,int a[][101],int i1,int j1,int i2,int
j2)
{
int l=1;
int r1=i2-i1;
int r2=j2-j1;
int r3=a[i2][j2]-a[i1][j1];
int i3=i2+r1,j3=j2+r2;
bool ok=1;
if(r3)
while(i3<=n && i3>=1 && j3<=m && j3>=1 && ok)
{
if(a[i3][j3]-a[i2][j2]==r3)
++l;
else
ok=0;
i2=i3;j2=j3;
i3+=r1;j3+=r2;
}
return l;
}

c)
int cerinta(int n,int m,int a[][101],int i1,int j1,int i2,int
j2)
{
int l=1;
int r1=i2-i1;
int r2=j2-j1;
int r3=a[i2][j2]-a[i1][j1];
int i3=i2+r1,j3=j2+r2;
bool ok=1;
if(r3)
while(i3<=n && i3>=1 && j3<=m && j3>=1 && ok)
{
if(a[i3][j3]-a[i2][j2]==r3)
++l;
else
ok=0;
i2=i3;j2=j3;
i3+=r1;j3+=r2;
}
return l;
}
int cerintac(int n,int m,int a[][101])
{
int maxi=0;
for(int i=1;i<=n;++i)
for(int i1=1;i1<=n;++i1)
for(int j=1;j<=m;++j)
for(int j1=1;j1<=m;++j1)
if(i!=i1 && j!=j1)
if(cerinta(n,m,a,i,j,i1,j1)>maxi)
maxi=cerinta(n,m,a,i,j,i1,j1);
return maxi;
}

You might also like