Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 2041. Ratio  (Citit de 15077 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« : Iunie 08, 2008, 18:57:20 »

nu stiu de ce iau restricted function  Brick wall Fighting

http://acm.tju.edu.cn/toj/vcontest/showp1364_H.html

Cod:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int x,y;
double minim(double a, double b){
       if (a>b)
          return b;
       return a;
}
double modul(double a){
    if (a<0)
       return a*(-1.00);
    return a;
}
double prec(double f,int y){
      double a;
      int jos,sus;
      a=f*y;
      jos=floor(a);
      sus=ceil(a);
      return (double) minim( modul( f -  ( (double) sus ) / y ),
                           modul( f -  ( (double) jos ) / y ));
}
void scrie(double f,int x){
     double c=f*x;
     int a,b;
     a=floor(c);
     b=ceil(c);
     if (b-c > c-a)
        printf("%d/%d\n",a,x);
     else
         printf("%d/%d\n",b,x);
}
void solve(){
     double f,xx,prev;
     int i;
     xx=(double)x;
     f=(double)(xx/y);
     prev=prec(f,1);
     scrie(f,1);
     for (i=2;i<=y;++i){
         xx=prec(f,i);
         if (xx<prev){
            scrie(f,i);
            prev=xx;
         }
         if (i*f==ceil(i*f))
            return;
     }
}
int main(void){
    FILE *f;
    f=fopen("ratio.inp","r");
    while (fscanf(f,"%d%d",&x,&y)!=EOF){
          solve();
          printf("\n");
    }
    return 0;
}
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #1 : Iunie 08, 2008, 19:28:42 »

Pentru ca deschizi un fisier. Smile
Memorat

Am zis Mr. Green
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #2 : Iunie 08, 2008, 19:42:07 »

Incearca sa comentezi portiuni de program, poate gasesti functia care ii deranjeaza. Compilatorul de pe tju am impresia ca nu e standard Smile.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #3 : Iunie 08, 2008, 20:08:52 »

pai trebuia sa deschid fisierul, de acolo citeam datele de intrare
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #4 : Iunie 08, 2008, 23:24:37 »

Incearca cu freeopen atunci.
Memorat

Am zis Mr. Green
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #5 : Iunie 09, 2008, 09:17:11 »

am  incercat si cu freopen si cu streamuri dar nu merge, da la fel, iar cand am scos fisierul de intrare iau presentation error
Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #6 : Iunie 09, 2008, 14:38:30 »

Recunosc ca enuntul e cam ambiguu cu fisierul ala "ratio.inp", dar se pare ca trebuie sa citesti din stdin. Presentation error primesti pentru ca tu scrii inca o linie goala si dupa ultimul set de date. Am modificat citirea in felul urmator si a luat AC:
Cod:
int t = scanf("%d%d", &x, &y);
while(t == 2) {
    solve();
    t = scanf("%d%d", &x, &y);
    if(t == 2)
        printf("\n");
}
Memorat

Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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