introduzione
Definiamo una nuova operazione aritmetica, che chiamo moltiplicazione con cerniera . Per zippare moltiplicando due numeri interi non negativi, aggiungi gli zeri iniziali per far corrispondere le lunghezze, moltiplica le corrispondenti cifre di base 10 dei numeri, aggiungi gli zeri iniziali ai risultati per ottenere numeri di 2 cifre, concatenarli e infine rilasciare zeri iniziali.
Ecco un esempio con A = 1276 e B = 933024 :
1. Add leading zeros
A = 001276
B = 933024
2. Multiply digit-wise
A = 0 0 1 2 7 6
B = 9 9 3 0 2 4
-> 0 0 3 0 14 24
3. Pad to 2 digits
-> 00 00 03 00 14 24
4. Concatenate
-> 000003001424
5. Drop leading zeros
-> 3001424
L'operazione è estesa a tutti i numeri interi con le consuete regole dei segni: i tempi positivi negativi sono negativi, i tempi negativi negativi sono positivi e così via.
L'obiettivo
I tuoi input sono due numeri interi e il tuo output è la loro moltiplicazione con cerniera. Dovresti essere in grado di gestire input arbitrariamente grandi. L'input e / o l'output possono essere in formato stringa (e in effetti devono esserlo, se la tua lingua non supporta numeri interi arbitrariamente grandi). Si noti che -0
non è un input o output valido.
Regole e punteggio
È possibile scrivere un programma completo o una funzione e vince il conteggio dei byte più basso.
Casi test
0 0 -> 0
302 40 -> 0
302 -40 -> 0
-4352 448 -> -122016
0 6623 -> 0
0 -6623 -> 0
20643 -56721 -> -1000420803
63196 21220 -> 1203021800
1276 933024 -> 3001424
-1276 933024 -> -3001424
-1276 -933024 -> 3001424
5007204555 350073039 -> 12001545
-612137119 -8088606033 -> 816060042000327
3389903661 -6619166963 -> -18180881090018543603
-23082746128560880381 1116941217 -> -8050600723200060807
-668336881543038127783364011867 896431401738330915057436190556 -> -485448120906320001351224000900090235004021121824000900403042
402878826066336701417493206805490000415 312487283677673237790517973105761463808 -> 120004325656161618004242182118140007280900200921180018080025285400000000320040
b⁵
conD
per ottenere i 10 byte. : P