Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Ce este signal 8?  (Citit de 11195 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
scipianus
Nu mai tace
*****

Karma: 129
Deconectat Deconectat

Mesaje: 345



Vezi Profilul
« : Octombrie 16, 2010, 17:03:57 »

La problema aceasta de ce apare "Killed by signal 8"?  Huh
http://infoarena.ro/job_detail/493067
« Ultima modificare: Octombrie 16, 2010, 20:35:20 de către Olariu Ciprian » Memorat
S7012MY
Nu mai tace
*****

Karma: 26
Deconectat Deconectat

Mesaje: 648



Vezi Profilul
« Răspunde #1 : Octombrie 16, 2010, 17:59:44 »

probabil impartire la 0. Gasesti mai multe aici: blogpetru.wordpress.com/2010/10/06/killed-by-signal-reasons/
Memorat
scipianus
Nu mai tace
*****

Karma: 129
Deconectat Deconectat

Mesaje: 345



Vezi Profilul
« Răspunde #2 : Octombrie 16, 2010, 20:36:38 »

nu e asta,uita-te si tu ca in tot programul am o imparitire si n-are nici o treaba cu 0

va rog uitati-va careva pe cod si ziceti de ce e signal 8,ca problema da bine daca o verificati cu exemple  Huh

Cod:
#include<fstream>
using namespace std;
int a[45001],prime[5000],n,e[5000],v[20001];
int main()
{
long int i,j;
for (i=4;i<=45000;i=i+2)
a[i]=1;
for (i=3;i<=45000;i=i+2)
if (a[i]==0)
for (j=i*i;j<=45000;j=j+2*i)
a[j]=1;
n=0;
for (i=2;i<=45000;i++)
if (a[i]==0)
prime[n++]=i;


long int a,b,nrdiv=0,aux,nr=0,contor=0,k,w,x=0,e1=0,f1;
ifstream fin("maxd.in");
ofstream fout("maxd.out");
fin>>a>>b;
long int min=a;
for(i=a;i<=b;i++)
                 {e1=0;
             w=0;
             k=0;
             aux=i;
             nr=1;
                     while(aux!=1)
                          {f1=prime[k];
                      e1=0;
                      while (aux%f1==0 && aux!=1)
                            {aux=aux/f1;
                        e1++;
                            }
                                  if (e1 != 0)
                         {e[w]=e1;
                                     w++;
                         }
                                  k++;
                          }
                     for(j=0;j<w;j++)
                                     if(e[j]!=0) nr=nr*(1+e[j]);
                     if(nr>nrdiv) nrdiv=nr;
             v[x]=nr;
             x++;
             for(j=0;j<5000;j++)
                                e[j]=0;
                 }
for(i=0;i<=x;i++)
if(v[i]==nrdiv)
               {contor++;
           if(v[i]==nrdiv && contor==1) min=a+i;
               }
fout<<min<<' '<<nrdiv<<' '<<contor;
fin.close();
fout.close();
return 0 ;
}
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #3 : Octombrie 16, 2010, 20:51:24 »

Verifica-ti programul pe testele de la OJI.
Memorat
MciprianM
Nu mai tace
*****

Karma: 87
Deconectat Deconectat

Mesaje: 324



Vezi Profilul
« Răspunde #4 : Octombrie 18, 2010, 20:18:07 »

La restrictii apare a si b mai mici ca 2 miliarde. Asta inseamna ca in teste o sa fie un numar care o sa contina un factor prim mai mare de 45000, de unde si impartirea cu 0 si eroarea sigfpe.
Memorat
scipianus
Nu mai tace
*****

Karma: 129
Deconectat Deconectat

Mesaje: 345



Vezi Profilul
« Răspunde #5 : Octombrie 19, 2010, 18:51:53 »

La restrictii apare a si b mai mici ca 2 miliarde. Asta inseamna ca in teste o sa fie un numar care o sa contina un factor prim mai mare de 45000, de unde si impartirea cu 0 si eroarea sigfpe.

mda,s-ar parea ca ai dreptate,dar acum ca am mai marit vectorii pt ciur,imi zice signal 11 pana sa fi verificat daca nu depasesc si marimea pt stiva Neutral
signal 11 stiu ca era depasirea limitelor unui vector,dar de ce dracu da asta? Neutral
http://infoarena.ro/job_detail/493879
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #6 : Octombrie 19, 2010, 22:40:39 »

Cred ca e din cauza unui common mistake la ciur.
Cod:
for (i=3;i<=100000;i=i+2)
        if (a[i]==0)
            for (j=i*i;j<=100000;j=j+2*i)
                a[j]=1;
Aici, in momentul in care i ajunge la 50 000 sau ceva de genu, j = i * i va iesi din int si va face overflow => j-ul va deveni un numar negativ iar cand faci a[j] = 1 => Killed by signal 11.
Memorat
MciprianM
Nu mai tace
*****

Karma: 87
Deconectat Deconectat

Mesaje: 324



Vezi Profilul
« Răspunde #7 : Octombrie 20, 2010, 19:02:30 »

Nu e nevoie sa maresti vectorii pentru ciur ca sa eviti problema de care ti-am zis eu. Fiecare numar intre 1 si 2000000000 are cel mult un factor prim mai mare decat sqrt(2000000000). Gandeste-te!
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines