infoarena

Comunitate - feedback, proiecte si distractie => Feedback infoarena => Subiect creat de: Luca Eduard din Decembrie 11, 2006, 22:45:26



Titlul: 001 CMMDC Wrong Answer
Scris de: Luca Eduard din 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)


Titlul: Raspuns: 001 CMMDC Wrong Answer
Scris de: Mircea Dima din Decembrie 12, 2006, 07:15:56
stai linistit ... la nimeni nu merge ;) sunt multe probleme la evaluator


Titlul: Raspuns: 001 CMMDC Wrong Answer
Scris de: Dan-Leonard Crestez din 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.


Titlul: Raspuns: 001 CMMDC Wrong Answer
Scris de: Mircea Dima din 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;
}


Titlul: Raspuns: 001 CMMDC Wrong Answer
Scris de: Dan-Leonard Crestez din 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?