Wprowadzenie
Zdefiniujmy nową operację arytmetyczną, którą nazywam mnożeniem suwaka . Aby zignorować pomnożenie dwóch nieujemnych liczb całkowitych, dodajesz zera wiodące, aby dopasować długości, mnożymy odpowiadające im 10-cyfrowe cyfry liczb, dodajesz zera wiodące do wyników, aby uzyskać 2-cyfrowe liczby, konkatenować je, a na końcu upuszczać zera wiodące.
Oto przykład z A = 1276 i 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
Operacja jest rozszerzona na wszystkie liczby całkowite ze zwykłymi regułami znakowania: czasy dodatnie ujemne są ujemne, czasy ujemne ujemne są dodatnie i tak dalej.
Zadanie
Twoje dane wejściowe to dwie liczby całkowite, a wynikiem jest ich pomnożenie przez suwak. Powinieneś być w stanie obsłużyć dowolnie duże dane wejściowe. Dane wejściowe i / lub wyjściowe mogą mieć format łańcuchowy (i rzeczywiście muszą być, jeśli twój język nie obsługuje dowolnie dużych liczb całkowitych). Pamiętaj, że -0nie jest to prawidłowe wejście lub wyjście.
Zasady i punktacja
Możesz napisać pełny program lub funkcję, a wygrywa najniższa liczba bajtów.
Przypadki testowe
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⁵zDaby uzyskać 10 bajtów. : P