<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Tmp_6_2</id>
	<title>Tmp 6 2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Tmp_6_2"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Tmp_6_2&amp;action=history"/>
	<updated>2026-04-15T15:53:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.algopedia.ro/wiki/index.php?title=Tmp_6_2&amp;diff=15660&amp;oldid=prev</id>
		<title>Bella: Created page with &quot;= Tema Rezolvari = == NrSufix == * https://www.pbinfo.ro/?pagina=probleme&amp;id=803 Fiind date două numere a şi b, îl numim pe a sufix al lui b dacă a este egal cu b sau dac...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Tmp_6_2&amp;diff=15660&amp;oldid=prev"/>
		<updated>2018-10-12T20:57:42Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Tema Rezolvari = == NrSufix == * https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=803 Fiind date două numere a şi b, îl numim pe a sufix al lui b dacă a este egal cu b sau dac...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Tema Rezolvari =&lt;br /&gt;
== NrSufix ==&lt;br /&gt;
* https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=803&lt;br /&gt;
Fiind date două numere a şi b, îl numim pe a sufix al lui b dacă a este egal cu b sau dacă b se poate obţine din a prin alipirea la stânga a unor noi cifre.&lt;br /&gt;
Exemplu: 12 este sufix al lui 12, iar 15 este sufix al lui 31415.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    int n, x, m, p;&lt;br /&gt;
    FILE *fin = fopen( &amp;quot;nrsufix.in&amp;quot;, &amp;quot;r&amp;quot; );&lt;br /&gt;
    FILE *fout = fopen( &amp;quot;nrsufix.out&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;
    fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
    p = 1;&lt;br /&gt;
    while( p &amp;lt;= n )&lt;br /&gt;
      p = p * 10;&lt;br /&gt;
    m = -1;&lt;br /&gt;
    while ( fscanf(fin, &amp;quot;%d&amp;quot;, &amp;amp;x) !=  EOF ) {     // citim valori pana la sfarsitul fisierului		 &lt;br /&gt;
        if( x % p == n )  			  // daca am taiat toate cifrele din cn, n e sufix al lui x&lt;br /&gt;
            m = x;				  // salvez nr x              &lt;br /&gt;
    }&lt;br /&gt;
    if ( m != -1 )				  // Daca am gasit un numar sufix&lt;br /&gt;
        fprintf( fout, &amp;quot;%d&amp;quot;, m );		  // afisez nr salvat in m			&lt;br /&gt;
    else&lt;br /&gt;
        fprintf( fout, &amp;quot;nu exista&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    fclose(fin);&lt;br /&gt;
    fclose(fout);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    int n, cn, x, cx, m;&lt;br /&gt;
    FILE *fin = fopen( &amp;quot;nrsufix.in&amp;quot;, &amp;quot;r&amp;quot; );&lt;br /&gt;
    FILE *fout = fopen( &amp;quot;nrsufix.out&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;
    fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
    &lt;br /&gt;
    m = -1;&lt;br /&gt;
    while ( fscanf(fin, &amp;quot;%d&amp;quot;, &amp;amp;x) !=  EOF ) {     // citim valori pana la sfarsitul fisierului&lt;br /&gt;
        cx = x;&lt;br /&gt;
        cn = n;&lt;br /&gt;
        while ( cn &amp;gt; 0 &amp;amp;&amp;amp; cn % 10 == cx % 10 ) {  // cata vreme ultima cifra din cn este egala cu ultima cifra din x&lt;br /&gt;
            cn = cn / 10;						  // taiem ultima cifra din cn&lt;br /&gt;
            cx = cx / 10;                         // taiem ultima cifra din x&lt;br /&gt;
        }&lt;br /&gt;
        if ( cn == 0 )   			  // daca am taiat toate cifrele din cn, n e sufix al lui x&lt;br /&gt;
            m = x;				  // salvez nr x           						  &lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    if ( m != -1 )				  // Daca am gasit un numar sufix&lt;br /&gt;
        fprintf( fout, &amp;quot;%d&amp;quot;, m );		  // afisez nr salvat in m			&lt;br /&gt;
    else&lt;br /&gt;
        fprintf( fout, &amp;quot;nu exista&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    fclose(fin);&lt;br /&gt;
    fclose(fout);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Jumatate ==&lt;br /&gt;
* https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=442&lt;br /&gt;
Se citește un număr natural n. Acest număr se “împarte” în alte două numere a și b, astfel: a este format din cifrele din prima jumătate a lui n, b este format din cifrele din a doua jumătate a lui n. Dacă  n are număr impar de cifre, cifra din mijloc se ignoră. De exemplu, dacă n=9183792, atunci a=918, iar b=792. Să se determine valoarea absolută a diferenței dintre a și b.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    int n, cn, nrcif, p, a, b, i;&lt;br /&gt;
    scanf(&amp;quot;%d&amp;quot;, &amp;amp;n);&lt;br /&gt;
    cn = n;&lt;br /&gt;
    // aflam cate cifre are n&lt;br /&gt;
    nrcif = 0;&lt;br /&gt;
    while ( cn &amp;gt; 0 ) {&lt;br /&gt;
        nrcif++;&lt;br /&gt;
        cn = cn / 10;&lt;br /&gt;
    }&lt;br /&gt;
    // mutam ultimele cifre in b&lt;br /&gt;
    b = 0; p = 1;&lt;br /&gt;
    for (i = 0; i &amp;lt; nrcif / 2; i++ ) {&lt;br /&gt;
        b = n % 10 * p + b;&lt;br /&gt;
        n /= 10;&lt;br /&gt;
        p = p * 10;&lt;br /&gt;
    }&lt;br /&gt;
    // daca am nr impar de cifre elimin cifra din mijloc&lt;br /&gt;
    if ( nrcif % 2 )&lt;br /&gt;
       n = n / 10;&lt;br /&gt;
    // in n a ramas cea de-a doua jumatate&lt;br /&gt;
    a = n;&lt;br /&gt;
    if ( a &amp;gt; b )&lt;br /&gt;
        printf(&amp;quot;%d&amp;quot;, a - b);&lt;br /&gt;
    else&lt;br /&gt;
        printf(&amp;quot;%d&amp;quot;, b - a);&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suma6 ==&lt;br /&gt;
* https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=1944,Suma6&lt;br /&gt;
La ultima oră de matematică, Ionel a învățat despre numere speciale. Acestea sunt numere naturale cu număr impar de cifre care au prima cifră egală cu ultima. Ionel a primit ca temă să analizeze un șir format din numere având număr impar de cifre. El trebuie să determine suma cifrelor din mijloc, de la numerele speciale care se găsesc în șirul dat.&lt;br /&gt;
Cerința&lt;br /&gt;
Se citește numărul natural n și apoi se citesc n numere naturale având fiecare număr impar de cifre. Să se calculeze suma cifrelor din mijlocul numerelor speciale din șirul dat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
    int n, i, x, p10, s;&lt;br /&gt;
    FILE *fin = fopen( &amp;quot;suma6.in&amp;quot;, &amp;quot;r&amp;quot; );&lt;br /&gt;
    FILE *fout = fopen( &amp;quot;suma6.out&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;
    fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
    s = 0;&lt;br /&gt;
    for( i = 0; i &amp;lt; n; i++ ){&lt;br /&gt;
      fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;x );&lt;br /&gt;
      // calculam puterea lui 10 mai mica sau eala cu x&lt;br /&gt;
      p10 = 100000000;&lt;br /&gt;
      while( p10 &amp;gt; x )&lt;br /&gt;
        p10 /= 10;&lt;br /&gt;
      &lt;br /&gt;
      if( x / p10 == x % 10 ){    // daca nr are prima si ultima cifra egale&lt;br /&gt;
        while( x &amp;gt; 10  ){         // scot din numar prima si ultima cifra pana cand raman cu o cifra sau niciuna&lt;br /&gt;
          x = ( x % p10 ) / 10;&lt;br /&gt;
          p10 /= 100;&lt;br /&gt;
        }&lt;br /&gt;
        s += x;					  // adun cifra din mijloc, pt numere cu nr par se aduna 0&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    fprintf( fout, &amp;quot;%d&amp;quot;, s );&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Numere palindrom apropiate de n Studiu de caz 2 ===&lt;br /&gt;
==== Enunt Varianta1 ====&lt;br /&gt;
Se citeste un numar n. Sa se afiseze cel mai apropiat numar palindrom fata de n, &amp;#039;&amp;#039;&amp;#039;diferit de n&amp;#039;&amp;#039;&amp;#039;.&amp;lt;br/&amp;gt;&lt;br /&gt;
Ex1: n = 122 , afisam 121; nr 122 e cuprins intre 121 si 131, iar 121 este mai apropiat fata de 122&amp;lt;br/&amp;gt;&lt;br /&gt;
Ex2: n = 121 , afisam 111 131; 111, 131 sunt la aceeasi distanta fata de n&amp;lt;br/&amp;gt;&lt;br /&gt;
Ex3: n = 247 , afisam 242 252; 242, 252 sunt la aceeasi distanta fata de n&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main(){&lt;br /&gt;
    int n, cn1, cn2, c1, c2, palin1, palin2, inv;&lt;br /&gt;
    cin &amp;gt;&amp;gt; n;               //citim n&lt;br /&gt;
    cn1 = n - 1;&lt;br /&gt;
    cn2 = n + 1;&lt;br /&gt;
    palin1 = palin2 = -1;                     // nu le-am gasit inca&lt;br /&gt;
    while ( palin1 == -1 &amp;amp;&amp;amp; palin2 == -1 ){   // inca nu le-am gasit&lt;br /&gt;
      //verific daca cn1 e palindrom&lt;br /&gt;
      c1=cn1;&lt;br /&gt;
      inv = 0;&lt;br /&gt;
      while (c1 &amp;gt; 0){&lt;br /&gt;
        inv = inv * 10 + c1 % 10;&lt;br /&gt;
        c1 = c1 /10; //div&lt;br /&gt;
      }&lt;br /&gt;
      if (cn1 == inv ){&lt;br /&gt;
        palin1 = cn1;&lt;br /&gt;
      }&lt;br /&gt;
      //verific daca cn2 e palindrom&lt;br /&gt;
      c2 = cn2;&lt;br /&gt;
      inv = 0;&lt;br /&gt;
      while ( c2 &amp;gt; 0 ){&lt;br /&gt;
        inv = inv * 10 + c2 % 10;&lt;br /&gt;
        c2 = c2 /10; //div&lt;br /&gt;
      }&lt;br /&gt;
      if (cn2 == inv ){&lt;br /&gt;
        palin2 =cn2;&lt;br /&gt;
      }&lt;br /&gt;
      cn1 = cn1-1;&lt;br /&gt;
      cn2 = cn2+1;&lt;br /&gt;
    }&lt;br /&gt;
    if ( palin1 != -1 &amp;amp;&amp;amp; palin2 != -1 )       // cand am gasit 2 la aceeasi distanta&lt;br /&gt;
      cout &amp;lt;&amp;lt; palin1 &amp;lt;&amp;lt; palin2;&lt;br /&gt;
    else if ( palin1 != -1 )                 // daca am gasit doar pe palin1&lt;br /&gt;
      cout &amp;lt;&amp;lt; palin1;&lt;br /&gt;
    else&lt;br /&gt;
      cout &amp;lt; &amp;lt;palin2;&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Enunt Varianta2 ==== &lt;br /&gt;
Se citeste un numar n. Sa se afiseze cel mai apropiat numar palindrom fata de n.&amp;lt;br/&amp;gt;&lt;br /&gt;
Ex1: n = 122 , afisam 121; nr 122 e cuprins intre 121 si 131, iar 121 este mai apropiat fata de 122&amp;lt;br/&amp;gt;&lt;br /&gt;
Ex2: n = 121 , afisam 121 &amp;lt;br/&amp;gt;&lt;br /&gt;
Ex3: n = 247 , afisam 242 252; 242 si 252 sunt la aceeasi distanta fata de n&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main(){&lt;br /&gt;
    int n, cn1, cn2, c1, c2, palin1, palin2, inv;&lt;br /&gt;
    cin&amp;gt;&amp;gt;n;               //citim n&lt;br /&gt;
    cn1=n;&lt;br /&gt;
    cn2=n;&lt;br /&gt;
    palin1 = palin2 = -1;                   //nu le-am gasit inca&lt;br /&gt;
    while (palin1 == -1 &amp;amp;&amp;amp; palin2 == -1){   //inca nu le-am gasit&lt;br /&gt;
      //verific daca cn1 e palindrom&lt;br /&gt;
      c1=cn1;&lt;br /&gt;
      inv = 0;&lt;br /&gt;
      while (c1 &amp;gt; 0){&lt;br /&gt;
        inv = inv * 10 + c1 % 10;&lt;br /&gt;
        c1 = c1 /10; //div&lt;br /&gt;
      }&lt;br /&gt;
      if (cn1 == inv ){&lt;br /&gt;
        palin1 = cn1;&lt;br /&gt;
      }&lt;br /&gt;
      //verific daca cn2 e palindrom&lt;br /&gt;
      c2=cn2;&lt;br /&gt;
      inv = 0;&lt;br /&gt;
      while (c2 &amp;gt; 0){&lt;br /&gt;
        inv = inv * 10 + c2 % 10;&lt;br /&gt;
        c2 = c2 /10; //div&lt;br /&gt;
      }&lt;br /&gt;
      if (cn2 == inv ){&lt;br /&gt;
        palin2 =cn2;&lt;br /&gt;
      }&lt;br /&gt;
      cn1 = cn1-1;&lt;br /&gt;
      cn2 = cn2+1;&lt;br /&gt;
    }&lt;br /&gt;
    if ( palin1!=-1 &amp;amp;&amp;amp; palin2!=-1 ){     // cand am gasit 2 la aceeasi distanta&lt;br /&gt;
      if( palin1 == palin2 )             // poate fi doar cazul in care n e palindrom &lt;br /&gt;
        cout &amp;lt;&amp;lt; palin1;&lt;br /&gt;
      else&lt;br /&gt;
        cout&amp;lt;&amp;lt;palin1&amp;lt;&amp;lt;&amp;quot; &amp;quot;&amp;lt;&amp;lt;palin2;       // afisez ambele numere&lt;br /&gt;
    }&lt;br /&gt;
      &lt;br /&gt;
    else if ( palin1!=-1 )               // daca am gasit doar pe palin1&lt;br /&gt;
      cout&amp;lt;&amp;lt;palin1;&lt;br /&gt;
    else&lt;br /&gt;
      cout&amp;lt;&amp;lt;palin2;&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parcurgerea numerelor din stanga si din dreapta unui numar n alternativ ===&lt;br /&gt;
Desigur ati observat ca algoritmii de mai sus contin codul de verificare a unui numar palindrom de 2 ori. Acest lucru poate fi evitat in doua moduri:&lt;br /&gt;
* fie parcurgem numerele pe care trebuie sa le verificam serpuit, intai n+1, apoi n-1, apoi n+2 si n-2, etc...verificand doar un numar la un moment dat. Ne oprim cand am gasit un numar palindrom. &lt;br /&gt;
* fie folosim functii ( subprograme ). Desi nu le-am studiat inca, unii dintre voi imi scriu deja rezolvari cu functii.&lt;br /&gt;
Haideti sa vedem o implementare a celor spuse pentru problema Benzinarii.&lt;br /&gt;
* [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=1945 Benzinarii Pbinfo]&lt;br /&gt;
&lt;br /&gt;
==== Varianta1 ====&lt;br /&gt;
// Calculam urmatorul numar pe baza distantei de la precedentul numar pana la el&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main(){&lt;br /&gt;
  int n, x, cp, pal, inv, semn, i;&lt;br /&gt;
  ifstream fin ( &amp;quot;benzinarii.in&amp;quot; );&lt;br /&gt;
  ofstream fout (&amp;quot;benzinarii.out&amp;quot; );&lt;br /&gt;
  fin &amp;gt;&amp;gt; n;&lt;br /&gt;
  x = n;&lt;br /&gt;
  pal = -1;                   // inca nu am gasit un palindrom&lt;br /&gt;
  semn = -1;                  // ne da directia numarului testat fata de n ( la st sau la dreapta)&lt;br /&gt;
  i = 0;                      // nr de valori pe care le verific&lt;br /&gt;
  do{&lt;br /&gt;
    i++;&lt;br /&gt;
    semn *= -1;               // ne spune daca e la stanga sau la dreapta lui n&lt;br /&gt;
    x = x + i * semn;         // +1,-2,+3,-4,+5,-6...fata de actualul nr&lt;br /&gt;
    // Verificam daca x e palindrom&lt;br /&gt;
    cp = x; inv = 0;&lt;br /&gt;
    while (cp &amp;gt; 0){&lt;br /&gt;
      inv = inv * 10 + cp % 10;&lt;br /&gt;
      cp = cp /10;&lt;br /&gt;
    }&lt;br /&gt;
    if ( x == inv )&lt;br /&gt;
      pal = x;&lt;br /&gt;
    //***************************&lt;br /&gt;
  }while ( pal == -1 );&lt;br /&gt;
  fout &amp;lt;&amp;lt; ( i + 1 ) / 2 &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; n + ( i + 1 ) / 2;&lt;br /&gt;
  fin.close();&lt;br /&gt;
  fout.close();&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Varianta2 ====&lt;br /&gt;
// Calculam urmatorul numar pe baza distantei de la n pana la el.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main(){&lt;br /&gt;
  int n, x, cp, pal, inv, semn, i;&lt;br /&gt;
  ifstream fin ( &amp;quot;benzinarii.in&amp;quot; );&lt;br /&gt;
  ofstream fout (&amp;quot;benzinarii.out&amp;quot; );&lt;br /&gt;
  fin &amp;gt;&amp;gt; n;&lt;br /&gt;
&lt;br /&gt;
  pal = -1;                       // inca nu am gasit un palindrom&lt;br /&gt;
  semn = -1;                      // ne da directia numarului testat fata de n ( la st sau la dreapta)&lt;br /&gt;
  i = 0;                          // nr de valori pe care le verific&lt;br /&gt;
  do{&lt;br /&gt;
    i++;&lt;br /&gt;
    semn *= -1;                   // ne spune daca e la stanga sau la dreapta lui n&lt;br /&gt;
    x = n + ( i + 1 ) / 2 * semn; // +1,-1,+2,-2,+3,-3...&lt;br /&gt;
    // Verificam daca x e palindrom&lt;br /&gt;
    cp = x; inv = 0;&lt;br /&gt;
    while (cp &amp;gt; 0){&lt;br /&gt;
      inv = inv * 10 + cp % 10;&lt;br /&gt;
      cp = cp /10;&lt;br /&gt;
    }&lt;br /&gt;
    if ( x == inv )&lt;br /&gt;
      pal = x;&lt;br /&gt;
    //***************************&lt;br /&gt;
  }while ( pal == -1 );&lt;br /&gt;
  fout &amp;lt;&amp;lt; ( i + 1 ) / 2 &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; n + ( i + 1 ) / 2; // distanta si kilometrajul de pe bord&lt;br /&gt;
  fin.close();&lt;br /&gt;
  fout.close();&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Varianta3 ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
// Cu functii&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int palin ( int x ){&lt;br /&gt;
    int cp, inv;&lt;br /&gt;
    cp = x; inv = 0;&lt;br /&gt;
    while (cp &amp;gt; 0){&lt;br /&gt;
      inv = inv * 10 + cp % 10;&lt;br /&gt;
      cp = cp /10;&lt;br /&gt;
    }&lt;br /&gt;
    if ( x == inv )&lt;br /&gt;
      return x;&lt;br /&gt;
    return -1;&lt;br /&gt;
}&lt;br /&gt;
int main(){&lt;br /&gt;
  int n, x, pal,semn, i;&lt;br /&gt;
  ifstream fin ( &amp;quot;benzinarii.in&amp;quot; );&lt;br /&gt;
  ofstream fout (&amp;quot;benzinarii.out&amp;quot; );&lt;br /&gt;
  fin &amp;gt;&amp;gt; n;&lt;br /&gt;
  x = n;&lt;br /&gt;
  semn = -1;                  // ne da directia numarului testat fata de n ( la st sau la dreapta)&lt;br /&gt;
  i = 0;                      // nr de valori pe care le verific&lt;br /&gt;
  do{&lt;br /&gt;
    i++;&lt;br /&gt;
    semn *= -1;               // ne spune daca e la stanga sau la dreapta lui n&lt;br /&gt;
    x = x + i * semn;         // +1,-2,+3,-4,+5,-6...fata de actualul nr&lt;br /&gt;
    // Verificam daca x e palindrom&lt;br /&gt;
    pal = palin(x);&lt;br /&gt;
    //***************************&lt;br /&gt;
  }while ( pal == -1 );&lt;br /&gt;
  fout &amp;lt;&amp;lt; ( i + 1 ) / 2 &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; n + ( i + 1 ) / 2;&lt;br /&gt;
  fin.close();&lt;br /&gt;
  fout.close();&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TEMA =&lt;br /&gt;
Corectati-va rezolvarile problemelor discutate in clasa.&lt;br /&gt;
Tema optionala. &lt;br /&gt;
* [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=1516 Bosumflat]&lt;br /&gt;
* [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=2009 Accesibil]&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>