Sunteți pe pagina 1din 2

Concursul Naţional de Informatică

Satu Mare
19-24 iulie 2009
Clasa a V-a
Problema 2: Bipartit

Un număr natural se numește număr bipartit dacă este de forma: aa…abbb..b unde a și b sunt cifre, a nu
poate fi 0, iar a și b apar cel puțin o dată.
De exemplu, 44441 este bipartit (a este 4 şi b este 1). De asemenea 31, 1000, 55555222 sunt numere
bipartite. Numerele 4414 şi 444444 nu sunt numere bipartite.

Un număr bipartit poate fi exprimat sub formă restrânsă astfel: m a n b, unde m reprezintă numărul de cifre
a iar n reprezintă numărul de cifre b.

De exemplu, numărul 88888000 poate fi exprimat sub formă restrânsă astfel: 5 8 3 0 (adică 5 de 8 şi 3 de 0).

Cerinţă:
Scrieţi un program care citeşte un număr natural și determină cel mai mic multiplu al său care este
număr bipartit scris sub formă restrânsă. Dacă numărul nu are multiplu bipartit mai mic decât 999999999,
se va afișa -1.

Date de intrare:
Din fișierul bipartit.in se citeşte de pe prima linir numărul natural nr.

Date de ieşire:
În fișierul bipartit.out se va afișa pe primul rând : m a n b (4 cifre despărţite între ele prin
câte un spaţiu) reprezentând forma restrânsă celui mai mic multiplu al numărului nr, dacă acesta este mai
mic decât 999999999 sau -1 în caz contrar.

Restricţii şi precizări:
1<=nr<=99999
Exemple:
Se citește de la tastatură Se va afișa pe ecran Explicație
125 1520 Cel mai mic multiplu bipartit este 500, el are 1
cifră de 5 şi 2 cifre de 0.
2005 3235 Cel mai mic multiplu bipartit este 222555, el
are 3 cifre de 2 şi 3 cifre de 5
17836 -1 Nu are multiplu bipartit mai mic decât
999999999

Timp de execuţie: 1 secundă/test


Problema 2: Bipartit

#include <fstream.h>
#include <iostream.h>
#include <conio.h>
int main()
{unsigned long int nr,p,i=1;
int s,t,m,n,gasit=0;
ifstream f("bipartit.in");
f>>nr;
f.close();
while(gasit==0)
{p=nr*i;
if(p>999999990)
gasit=2;
else
{t=p%10;
p/=10;
n=1;
while(p%10==t)
{p/=10;
n++;
}
if(p!=0)
{s=p%10;
p/=10;
m=1;
while(p%10==s)
{p/=10;
m++;
}
if(p==0) gasit=1;
else { i++;
m=0;
n=0;
}
}
else { i++;
m=0;n=0; }
}
}
ofstream g("bipartit.out");
if(gasit==1)
g<<m<<" "<<s<<" "<<n<<" "<<t;
else
g<<-1;
g.close();
return 0;
}

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