Mnożenie

Transkrypt

Mnożenie
I Mistrzostwa Warszawskiej Wyższej Szkoły Informatyki w Programowaniu
8 – 17 stycznia 2009
Mnożenie
Ludzie od zarania dziejów próbują ułatwić sobie wykonywanie wszelkich obliczeń
matematycznych. Pierwsze potrzeby liczenia dały się odczuć człowiekowi już w czasach, kiedy
mieszkał w jaskiniach i lasach. Aby regularnie (lub o odpowiedniej porze) składać bogom ofiary
należało wykazać się zdolnością odliczania dni. W tamtych czasach liczyło się poprzez
wykonywanie nacięć na kawałku drewna lub wykonywaniu rysunków na kamiennych ścianach.
Rozwój cywilizacji przynosił coraz to więcej powodów do liczenia. Pasterz chciał mieć
możliwość sprawdzenia, czy przypadkiem nie ubyło mu owieczki. Starożytni Rzymianie zauważyli,
że można tego typu potrzebę zaspokoić przygotowując sobie zbiór kamieni równoliczny ze zbiorem
owiec i stosowne sprawdzenie można było wówczas wykonać przez porównanie ilości elementów
tych dwóch zbiorów. Nieco później (około 600 – 500 roku przed nasza erą) pojawiły się pierwsze
liczydła. W połowie VII wieku wynalezienie symbolu zera przez Hindusów dało początek
obliczeniom na piśmie.
Zatrzymajmy się na chwilę w VII wieku naszej ery w którym nie istnieją kalkulatory,
telefony, komputery istnieje za to umiejętność prowadzenia obliczeń na piśmie. Napisz program,
który pomnoży pisemnie dwie liczby naturalne.
Wejście
W pierwszej linii wejścia znajduje się jedna liczba naturalna d (1 ≤ d ≤ 100) określająca
ilość zestawów danych.
W kolejnych liniach znajduje się d zestawów danych. Każdy zestaw danych składa się
z pojedynczej linii zawierającej dwie liczby całkowite a i b (1 ≤ a, b ≤ 1050 oraz a ≥ b) oddzielone
pojedynczą spacją. Liczby te są czynnikami szukanego iloczynu.
Wyjście
Dla każdego zestawu danych należy wypisać wszystkie etapy pisemnego mnożenia liczb
a i b. Pierwsze dwie linie każdego zestawu danych powinny zawierać czynniki naszego iloczynu
czyli liczby a i b. Liczby te powinny być wyrównane w ten sposób, aby ich ostatnie cyfry były
w tej samej kolumnie co ostatnia cyfra iloczynu. W trzeciej linii wyjścia należy wypisać kreskę
zbudowaną ze znaków „-”. Kreska ta również powinna być wyrównana do prawej strony
zaś jej długość powinna być równa ilości cyfr liczby a. W kolejnych liniach powinny znajdować się
częściowe iloczyny jakie tworzone są przy okazji mnożenia „pod kreską”. Każdy z nich powinien
być odpowiednio przesunięty od prawej strony. W kolejnej linii każdego zestawu danych należy
wypisać drugą kreskę o długości równej ilości cyfr końcowego iloczynu. W ostatniej linii powinien
znaleźć się szukany iloczyn.
Uwaga! W tym zadaniu szczególnie ważne jest zastosowanie się do specyfikacji wyjścia.
Proszę nie wypisywać żadnych dodatkowych białych znaków (spacji itp.) poza tymi, które są
niezbędne do przesunięcia liczb, kreski i częściowych iloczynów. Niezastosowanie się do tej
uwagi może zakończyć się statusem WA na koniec rundy.
Runda: 2
Zadanie: Mnożenie
Strona 1/2
I Mistrzostwa Warszawskiej Wyższej Szkoły Informatyki w Programowaniu
8 – 17 stycznia 2009
Przykład
Dla danych:
1
221 123
Runda: 2
Należy wypisać:
221
123
--663
442
221
----27183
Zadanie: Mnożenie
Strona 2/2