Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: FMI No Stress 2010 : Decembrie 12, 2010, 18:05:02
Ar fi fost frumos ca toti sa stie cat va fi prelungit concursul .
Era bine daca am fi apucat sa trimitem toate rezolvarile .
sad


2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / ... : Decembrie 15, 2009, 10:53:19
Salut si multumesc pentru raspuns.Am gasit ca limita unsigned long long-ului este ULLONG_MAX=18446744073709551615 , asa ca de fiecare data calculez sirul astfel (si banuiesc ca este corect pt ca ULLONG_MAX>k cerut de pb),dar tot nu iau toate testele.

Cod:
for (int i=lu; i>=1; i--)
{
din[i]=1;
for (int j=1; j<=26; j++)
if ((din[i]+din[next[j][i+1]])>(ULLONG_MAX))
din[i]=ULLONG_MAX;
else
din[i]=din[i]+din[next[j][i+1]];
}

 Ma gandesc ca poate pe compilatorul folosit de voi long long-ul are o limita mai mica decat 1018. Confused
3  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / kss : Decembrie 08, 2009, 22:43:14
Am incercat sa rezolv pb Kss (conform solutiei postate de voi) , dar totusi iau doar 40 pct (pe restul testelor-incorect). Imi este destul de greu sa fac debbuging in lipsa unui test pe care sa crape implementarea mea.Daca aveti niste teste mai mari (cu tot cu rezultate) v-as fi recunoscatoare.

Sursa :

Cod:
void prel(char *sir,int lu,unsigned long long k)
{
int x;
//sol-vectorul in care constr solutia
//sir-sirul initial de carcatere
//lu-lungimea sirului
//initializari
sol[0]=0;
for (int i=1; i<=26; i++)
next[i][lu+1]=0;
for (int i=lu; i>0; i--)
{
x=sir[i]-'a'+1;
next[x][i]=i;
for (int j=1; j<x; j++)
next[j][i]=next[j][i+1];
for (int j=x+1; j<=26; j++)
next[j][i]=next[j][i+1];
}
for (int i=lu; i>=1; i--)
{
din[i]=1;
for (int j=1; j<=26; j++)
din[i]+=din[next[j][i+1]];
}
//sfarsit initializari
int p,e=1,q=1;
//e-caracterul pe care incerc sa-l pun in solutie
while (1)
{
p=next[e][q];  // p - poz de pe care incerc sa iau caracterul din sirul initial pt a-l pune in sol
// q - pozitia (din sirul initial) imediat de dupa ultimul caracter pus in solutie
while (din[p]<k)
{
  k=k-din[p];
    e++;
if ((e>26))
{
g<<-1<<endl;
return;
}
p=next[e][q];
}
sol[0]++;//tin nr de caractere din solutie
sol[sol[0]]='a'+e-1;
e=1;
k--;
if (!k)
{
afis();//afiseaza solutia
return;
}
// q=next[e][q];
   // q++;
q=p+1;
}
}

4  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 603 Pairs : Noiembrie 27, 2007, 20:31:09
Am citit rezolvarea de la Pairs(preONI 2008,runda 1) si nu am inteles partea asta :
"Consideram toate numerele P ce se scriu ca produs de numere prime, unde fiecare numar prim este folosit cel mult o data. Daca numarul de numere prime din descompunerea lui P este un numar impar, adunam xP la Res. Altfel, din Res scadem xP."
As fi recunoscatoare sa-mi poata explica cineva...ms anticipat
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines