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

Envío 5055

Problema 0x32 - Sumar dos números muy grandes

  • Autor: cams2692
  • Fecha: 2021-10-08 15:23:26 UTC (Hace más de 2 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.005 s 3 KBi
#2
Correcto
0.003 s 3 KBi
#3
Correcto
0.004 s 3 KBi
#4
Correcto
0.007 s 6 KBi
#5
Correcto
0.004 s 3 KBi
#6
Correcto
0.004 s 3 KBi
#7
Correcto
0.004 s 3 KBi
#8
Correcto
0.004 s 3 KBi
#9
Correcto
0.004 s 3 KBi
#10
Correcto
0.004 s 3 KBi
#11
Correcto
0.004 s 3 KBi
#12
Correcto
0.003 s 3 KBi
#13
Correcto
0.004 s 5 KBi
#14
Correcto
0.004 s 6 KBi
#15
Correcto
0.004 s 3 KBi
#16
Correcto
0.006 s 5 KBi
#17
Correcto
0.005 s 3 KBi
#18
Correcto
0.004 s 3 KBi
#19
Correcto
0.004 s 4 KBi
#20
Correcto
0.004 s 7 KBi
#21
Correcto
0.004 s 3 KBi
#22
Correcto
0.004 s 5 KBi
#23
Correcto
0.004 s 4 KBi
#24
Correcto
0.005 s 5 KBi
#25
Correcto
0.004 s 5 KBi
#26
Correcto
0.004 s 3 KBi
#27
Correcto
0.005 s 9 KBi
#28
Correcto
0.004 s 3 KBi
#29
Correcto
0.011 s 4 KBi
#30
Correcto
0.006 s 6 KBi
#31
Correcto
0.009 s 4 KBi
#32
Correcto
0.007 s 3 KBi
#33
Correcto
0.006 s 4 KBi
#34
Correcto
0.008 s 4 KBi
#35
Correcto
0.007 s 4 KBi
#36
Correcto
0.012 s 4 KBi
#37
Correcto
0.006 s 5 KBi
#38
Correcto
0.006 s 6 KBi
Puntos totales: 100 / 100

Código

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func main() {
	reader := bufio.NewReader(os.Stdin)

	number, _ := reader.ReadString('\n')
	number = strings.ReplaceAll(number, "\n", "")
	number2, _ := reader.ReadString('\n')
	number2 = strings.ReplaceAll(number2, "\n", "")
	var out []rune
	var out2 []rune
	if len(number) < len(number2) {
		out = []rune(number2)
		out2 = []rune(number)
	} else {
		out = []rune(number)
		out2 = []rune(number2)
	}
	sum := true
	index := len(out) - 1
	sumOne := false
	diference := len(out) - len(out2)
	for sum && index >= 0 {
		numberIndex, _ := strconv.ParseInt(string(out[index]), 10, 64)
		if index-diference >= 0 {
			numberIndex2, _ := strconv.ParseInt(string(out2[index-diference]), 10, 64)
			numberIndex += numberIndex2
		}
		if sumOne {
			numberIndex += 1
			sumOne = false
		}
		if numberIndex > 9 {
			number := fmt.Sprintf("%d", numberIndex)
			out[index] = []rune(number)[1]
			sumOne = true
			if index == 0 {
				out = append([]rune("1"), out...)
			}
		} else {
			out[index] = []rune(fmt.Sprintf("%d", numberIndex))[0]
			if index-diference < 0 {
				sum = false
			}

		}
		index--
	}

	fmt.Println(string(out))
}