TOPIC

Wrong Answer 20%

Pedro M. asked 2 years ago

Onde estaria o erro nesse código? (tento usar ponteiro quando este der certo, estava testando as funções separadamente e parecia não haver problema)

#include <stdio.h>
#include <stdlib.h>
/*Use ponteiro pelo menos uma vez no código.*/
long long unsigned int k_fat(int m, int n){
  int produtorio=1, diff=m;//-0*n
  while(diff>=1){
    produtorio*=diff;
    diff-=n;
  }
  return produtorio;
}

int pot(int base, int expoente){
  if(expoente==0) return 1;
  else if(expoente==1) return base;
  else return base*pot(base, expoente-1);
}

int num(char string[23]){
  int i=0, j=0, acm=0;
  for(i;i<23;i+=1){
    if(string[i]=='!'){
      for(j;j<i;j+=1){
        acm+=((int)string[j]-'0')*pot(10,i-1-j);
      }
      i=23;
    }
  }
  return acm;
}

int n_exc(char string[23]){
  int i=0, j=0, acm=0;
  for(i;i<23;i+=1){
    if(string[i]=='!'){
      acm+=1;
    }
  }
  return acm;
}

int main(void) {
  int i=0, n;
  //int *x = malloc(23*sizeof(char));
  scanf("%d", &n);
  for(i;i<n;i+=1){
    char x[23];
    scanf("%s", x);
    //printf("%d, %d\n", num(x), n_exc(x));
    printf("%lld\n", k_fat(num(x), n_exc(x)));
  }
  return 0;
}

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

  • feodorv replied 2 years ago

    Line #47. Why buffer size is 23? It's too small for the problem.