TOPIC

PROBLEM 1289 - URI Fórum 1.0

URI Online Judge asked 7 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Carlos Adir Ely Murussi Leite replied 4 years ago

    Sim, ainda sim os resultados diferem em 1: na ultima casa decimal. Ajustei o zero, no meu dava -nan(pois dividia por zero), e deu accepted. Obrigado.

  • Leandro de Campos replied 4 years ago

    esquece, viu, olha esses casos aqui 10 10 0 5 5 0 1 7 0 6 7 0 1 7 0 7 7 0 6 8 0 7 8 0 1 1000 0 10 1000 0 1000 o seu tá retornando 0? o meu tava dando wa por causa disso

  • Leandro de Campos replied 4 years ago

    estou com o mesmo problema, se puder rejulgar a sumissão 4841277

  • Carlos Adir Ely Murussi Leite replied 4 years ago

    up (Se não for permitido, exclua a mensagem e me informe, no FAQ não informa se é permitido isso)

  • Carlos Adir Ely Murussi Leite replied 4 years ago

    Meu código passa em todos os códigos que testei, mas dá 10% WA:

    #include <stdio.h>
    #include <math.h>
    int main()
    {
        int S, N, I, i;
        double P, Q, w;
        scanf("%d", &S);
        for(i=0; i<S; i++)
        {
            scanf("%d %lf %d", &N, &P, &I);
            Q = 1 - P;
            w = P * pow(Q,I-1)/(1-pow(Q,N));
            printf("%.4lf\n", w);
        }
    }

    Fiz um código para gerar números aleatórios possiveis, abaixo mostrado:

    #include <stdio.h>
    
    int main()
    {
        FILE *fp;
        fp = fopen("Entrada.txt", "w");
        int i, j, k, n;
        fprintf(fp, "499851\n");
        for(i=2; i<=100; i++)
        {
            for(j=1; j<=i; j++)
            {
                for(k=1; k<=9; k++)
                    fprintf(fp, "%d 0.0%d %d\n", i, k, j);
                for(k=10;k<=99; k++)
                    fprintf(fp, "%d 0.%d %d\n", i, k, j);
            }
        }
    }

    Que grava em um arquivo 499851 entradas de teste. Então com essas entradas, joguei no Toolkit e peguei o gabarito, e deixei em um arquivo Gabarito.txt Então, com o programa abaixo(o primeiro, mas esse grava em arquivo chamado Saida.txt):

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main()
    {
        FILE *fr, *fw;
        fr = fopen("Entrada.txt", "r");
        fw = fopen("Saida.txt", "w");
        int n, i, a, b;
        double p, q, w;
        fscanf(fr, "%d", &n);
        for(i=1; i<=n; i++)
        {
            fscanf(fr, "%d %lf %d", &a, &q, &b);
            p = 1 - q;
            w = q * pow(p,b-1)/(1-pow(p,a));
            fprintf(fw, "%.4lf\n", w);
        }
    }

    E então, com o gabarito e as minhas saidas para as 499851 entradas diferentes, comparei os resultados entre os dois com o programa abaixo:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main()
    {
        FILE *fg, *fs, *fe, *fr;
        fe = fopen("Entrada.txt", "r");
        fg = fopen("Gabarito.txt", "r");
        fs = fopen("Saida.txt", "r");
        fr = fopen("Resultado.txt", "w");
        int n, i, a, b;
        double p, q, w;
        fscanf(fe, "%d", &n);
        for(i=1; i<=n; i++)
        {
            fscanf(fg, "%lf", &p);
            fscanf(fs, "%lf", &q);
            fscanf(fe, "%d %lf %d", &a, &w, &b);
            if( p - q)
                fprintf(fr, "%d %.2lf %d    %.4lf %.4lf\n", a, w, b, p, q);
        }
    }

    E então joguei os resultados obtidos(os resultados diferentes entre minhas saidas e o gabarito são informadas no arquivo Resultado.txt). E então os resultados obtidos foram:

    2 0.72 1    0.7812 0.7813
    54 0.50 5    0.0312 0.0313
    55 0.50 5    0.0312 0.0313
    56 0.50 5    0.0312 0.0313
    57 0.50 5    0.0312 0.0313
    58 0.50 5    0.0312 0.0313
    59 0.50 5    0.0312 0.0313
    60 0.50 5    0.0312 0.0313
    61 0.50 5    0.0312 0.0313
    62 0.50 5    0.0312 0.0313
    63 0.50 5    0.0312 0.0313
    64 0.50 5    0.0312 0.0313
    65 0.50 5    0.0312 0.0313
    66 0.50 5    0.0312 0.0313
    67 0.50 5    0.0312 0.0313
    68 0.50 5    0.0312 0.0313
    69 0.50 5    0.0312 0.0313
    70 0.50 5    0.0312 0.0313
    71 0.50 5    0.0312 0.0313
    72 0.50 5    0.0312 0.0313
    73 0.50 5    0.0312 0.0313
    74 0.50 5    0.0312 0.0313
    75 0.50 5    0.0312 0.0313
    76 0.50 5    0.0312 0.0313
    77 0.50 5    0.0312 0.0313
    78 0.50 5    0.0312 0.0313
    79 0.50 5    0.0312 0.0313
    80 0.50 5    0.0312 0.0313
    81 0.50 5    0.0312 0.0313
    82 0.50 5    0.0312 0.0313
    83 0.50 5    0.0312 0.0313
    84 0.50 5    0.0312 0.0313
    85 0.50 5    0.0312 0.0313
    86 0.50 5    0.0312 0.0313
    87 0.50 5    0.0312 0.0313
    88 0.50 5    0.0312 0.0313
    89 0.50 5    0.0312 0.0313
    90 0.50 5    0.0312 0.0313
    91 0.50 5    0.0312 0.0313
    92 0.50 5    0.0312 0.0313
    93 0.50 5    0.0312 0.0313
    94 0.50 5    0.0312 0.0313
    95 0.50 5    0.0312 0.0313
    96 0.50 5    0.0312 0.0313
    97 0.50 5    0.0312 0.0313
    98 0.50 5    0.0312 0.0313
    99 0.50 5    0.0312 0.0313
    100 0.50 5    0.0312 0.0313

    As saidas diferem do gabarito apenas no ultimo algarismo. Verificando mais afundo, percebi que as minhas respostas foram arredondadas(no caso dos termos 0.7812 0.7813, na realidade seria 0.78125), como o wolframalpha mostra no link abaixo: Wolfram1%2F(1-(1-0.72)%5E(2))) Wolfram2%2F(1-(1-0.5)%5E(96))) Gostaria que minha submissão(numero 4730168) fosse rejulgada... A equação utilizada foi através de séries, então ela é exata(exceto até o computador realizar a conta).