TOPIC

Wrong Answer 5%

Pedro M. asked 2 years ago

Tentei trocar também e utilizar os logaritmos naturais (com a aproximação de Stirling pro fatorial), trocando o tipo para long double, mass o erro passava a ser de 100%

#include <stdio.h>
#include <math.h>
//long double fatorial(int n){
unsigned long long int fatorial(int n){
  //return n*log(n)-n; //aprox de Stirling
  //if(n>=2) return log(n)+log(fatorial(n-1));
  if(n<2) return n;
  else return n*fatorial(n-1);
}
//long double power(int base, int exp){
unsigned long long int power(int base, int expoente){
  //if(base>=2) return expoente*log(base);
  int i=0, resp=1;
  for (i;i<expoente;i+=1){
    resp*=base;
  }
  return resp;
}

int main(){
  int n, i=0, acm=0;
  scanf("%d", &n);
  //printf("%f\n", log(n));
  int jogo[n];
  for(i;i<n;i+=1){
    int a,b,c;
    scanf("%d^%d", &a,&b);
    scanf("%d!", &c);
    if (power(a,b)>fatorial(c)){
      jogo[i]=1;
      acm+=1;
    }else{
      jogo[i]=0;
    }
  }
  if(acm>n/2) printf("Campeao: Lucas!\n");
    else if(acm<n/2) printf("Campeao: Pedro!\n");
    else printf("A competicao terminou empatada!\n");
    i=0;
    for(i;i<n;i+=1){
      if (jogo[i]==1)
        printf("Rodada #%d: Lucas foi o vencedor\n", i+1);
      else
        printf("Rodada #%d: Pedro foi o vencedor\n", i+1);
    }
  return 0;
}

Remember not post solutions. Your post may be reviewed by our moderators.

  • Alexandre Gadelha replied 2 years ago

    Na verdade, tu não irá precisar de usar Logaritmo Natural (log) pra resolver. Se tu souber as propriedades do Logaritmo Decimal (log10) tu conseguirá resolver esse problema de boa