Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 001 CMMDC Wrong Answer  (Citit de 6744 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
edu2004eu
Strain


Karma: -6
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« : Decembrie 11, 2006, 22:45:26 »

Am trimis raspunsul la problema CMMDC, care apropo merge perfect acasa, si imi zice wrong answer: 0 pct.
Iata ce am scris:
Cod:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main(void) {
 int a,b,x;
 FILE *in,*out;
 in=fopen("cmmdc.in", "rt");
 out=fopen("cmmdc.out", "w+");
 fscanf(in,"%d",&a);
 fscanf(in,"%d",&b);
 while (a!=b) {
 x=abs(a-b);
 b=a;
 a=x;
 }
 if (a==1) { a=0; } // daca sterg lini asta primesc 50 pct
 if (a!=1) { fprintf(out,"%d",a); }
 return 0;
}
iar daca scriu asa primesc 50 pct:
Cod:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main(void) {
 int a,b,x;
 FILE *in,*out;
 in=fopen("cmmdc.in", "rt");
 out=fopen("cmmdc.out", "w+");
 fscanf(in,"%d",&a);
 fscanf(in,"%d",&b);
 while (a!=b) {
 x=abs(a-b);
 b=a;
 a=x;
 }
// if (a==1) { a=0; }
 if (a!=1) { fprintf(out,"%d",a); }
 return 0;
}
va rog sa ma ajutati (job #809)
Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #1 : Decembrie 12, 2006, 07:15:56 »

stai linistit ... la nimeni nu merge Wink sunt multe probleme la evaluator
Memorat
fluffy
Echipa infoarena
De-al casei
*****

Karma: 71
Deconectat Deconectat

Mesaje: 146



Vezi Profilul
« Răspunde #2 : Decembrie 12, 2006, 09:46:34 »

Nu este problema de evaluator (cel putin nu cred).

Uite sursa graderului per-problema:

Cod:
#include <stdio.h>

int main()
{
  int a, b, r, i, rc, min;
 
  FILE *f=fopen("cmmdc.in", "r");
  fscanf(f, "%d %d", &a, &b);
  fclose(f);

  f=fopen("cmmdc.out", "r");
  fscanf(f, "%d", &r);
  fclose(f);
 
  rc=0;
  if (a>b) min=b; else min=a;
  // calculeaza raspuns corect
  for (i=min; i>1; i--)
    {
      if ((!(a%i))&&(!(b%i))) { rc=i; break; }
    }

  // compara
  if (r!=rc)
    {
      fprintf(stderr,"OKAY!");
      printf("10");
    }
  else
    {
      fprintf(stderr, "Wrong answer");
      printf("0");
    }
 
  return 0;
}

I have no idea what's going on.
Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #3 : Decembrie 12, 2006, 12:33:20 »

atunci explica-mi si mie de ce nu functioneaza algoritmul urmator (care lua 100 pe infoarena 1):

Cod:

#include <cstdio>

int cmmdc(int a, int b)
{
while(a!=b)
if(a>b) a-=b;
else b-=a;
return a;
}

int main()
{
int a, b;
freopen("cmmdc.in", "r", stdin);
freopen("cmmdc.out", "w", stdout);
scanf("%d %d\n", &a, &b);
int p=cmmdc(a, b);
if(p==1) printf("0\n");
else  printf("%d\n", p);
return 0;
}
Memorat
fluffy
Echipa infoarena
De-al casei
*****

Karma: 71
Deconectat Deconectat

Mesaje: 146



Vezi Profilul
« Răspunde #4 : Decembrie 12, 2006, 15:03:50 »

Daca citesti un pic codul evaluatorului se observa ca nu prea are nici o logica. Crapa daca nu ai cmmdc.out, foloseste un algoritm prost si da punctajele fix invers. Mici scapari

Aparent a fost important un evaluator mai vechi. Noi inainte tineam doar executabilele evaluatoarelor, acum tinem sursele. Asta era ca eval.c, probabil ca executabilul era din alta parte.

Am rescris evaluatorul si le-am reevaluat pe toate.

Oricum... faceti si voi probleme serioase, ce naiba?
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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