█████████ ████ ███░░░░░███ ░░███ ███ ░░░ ██████ ███████ ██████ ██████ ░███ ███░░███ ███░░███ ███░░███ ███░░███ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░███ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ░███ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░

Envío 3857

Problema 0x30 - Incrementar un número muy grande

  • Autor: bryancalisto
  • Fecha: 2021-04-18 02:46:31 UTC (Hace casi 3 años)
Caso # Resultado Tiempo Memoria
#1
Incorrecto
0.005 s 2 KBi
#2
Incorrecto
0.002 s 2 KBi
#3
Error en tiempo de ejecución (NZEC)
Exited with error status 134
double free or corruption (out)
run: line 1:     3 Aborted                 (core dumped) ./a.out
0.005 s 1 KBi
#4
Correcto
0.002 s 1 KBi
#5
Correcto
0.006 s 1 KBi
#6
Correcto
0.003 s 1 KBi
#7
Correcto
0.005 s 2 KBi
#8
Correcto
0.002 s 2 KBi
#9
Correcto
0.002 s 2 KBi
#10
Correcto
0.003 s 1 KBi
#11
Correcto
0.002 s 2 KBi
#12
Correcto
0.005 s 1 KBi
#13
Incorrecto
0.003 s 1 KBi
#14
Incorrecto
0.004 s 1 KBi
#15
Incorrecto
0.004 s 1 KBi
#16
Incorrecto
0.005 s 1 KBi
#17
Incorrecto
0.002 s 2 KBi
#18
Incorrecto
0.003 s 2 KBi
#19
Incorrecto
0.001 s 1 KBi
#20
Incorrecto
0.004 s 1 KBi
#21
Incorrecto
0.001 s 2 KBi
#22
Correcto
0.004 s 2 KBi
#23
Correcto
0.007 s 1 KBi
#24
Correcto
0.004 s 1 KBi
#25
Correcto
0.003 s 1 KBi
#26
Incorrecto
0.004 s 2 KBi
#27
Incorrecto
0.007 s 1 KBi
#28
Incorrecto
0.004 s 2 KBi
#29
Incorrecto
0.006 s 1 KBi
#30
Incorrecto
0.002 s 2 KBi
#31
Incorrecto
0.006 s 1 KBi
#32
Incorrecto
0.006 s 2 KBi
#33
Incorrecto
0.005 s 1 KBi
#34
Incorrecto
0.004 s 2 KBi
Puntos totales: 39 / 100

Código

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
  char *input;
  int len, i, *num, carry = 0;

  input = (char *)malloc(10001);
  fgets(input, 10001, stdin);
  len = strlen(input) - 1;
  input[len] = '\0'; // replace '\n'
  num = (int *)malloc(sizeof(int) * len);

  if (len == 1 && *input == '0')
  {
    printf("1\n");
    free(num);
    free(input);
    return 0;
  }

  for (i = 0; i < len; i++)
  {
    num[i] = input[i] - '0';
  }

  num[len - 1]++;

  if (num[len - 1] > 9)
  {
    carry = 1;
    num[len - 1] = 0;
  }

  for (i = len - 2; i >= 0; i--)
  {
    num[i] += carry;

    if (num[i] > 9)
    {
      carry = 1;
      num[i] = 0;
    }
    else
    {
      carry = 0;
    }
  }

  if (carry == 1)
  {
    printf("1");
  }

  for (i = 0; i < len; i++)
  {
    printf("%d", num[i]);
  }

  printf("\n");

  free(num);
  free(input);
  return 0;
}