CCC-97 (1997) - 5 (Div)

View as PDF

Submit solution

Points: 50 (partial)
Time limit: 1.0s
Memory limit: 1M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Python
Long Division

Στις παλιές μέρες (περίπου το 1965), οι μηχανικές αριθμομηχανές εκτελούσαν διαίρεση με μετατόπιση και επαναλαμβανόμενη αφαίρεση. Για παράδειγμα, για να διαιρεθεί το 987654321 με το 3456789, οι αριθμοί θα πρέπει πρώτα να ευθυγραμμιστούν με το αριστερό ψηφίο τους (βλ. το (1) παρακάτω) και ο διαιρέτης να αφαιρεθεί από τον διαιρετέο όσο το δυνατόν περισσότερες φορές χωρίς να προκύψει αρνητικός αριθμός. Ο αριθμός των επιτυχημένων αφαιρέσεων (σε αυτό το παράδειγμα, το (2)) είναι το πρώτο ψηφίο του πηλίκου. Ο διαιρέτης, μετατοπισμένος προς τα δεξιά (βλ. το (2) παρακάτω), αφαιρείται από το υπόλοιπο αρκετές φορές για να προκύψει το επόμενο ψηφίο και ούτω καθεξής έως ότου το υπόλοιπο είναι μικρότερο από το διαιρέτη.

 987654321
-3456789          ← First successful subtraction (1)
 ========
 641975421
-3456789          ← Second successful subtraction
 ========
 296296521        ← remainder
-3456789          ← unsuccessful subtraction        
 ========
 negative

296296521
 3456789            (2)
========
261728631
     etc.
  1. Γράψτε ένα πρόγραμμα για την εφαρμογή αυτής της μεθόδου διαίρεσης.

Είσοδος

Η πρώτη γραμμή του αρχείου εισόδου περιέχει έναν θετικό ακέραιο n, n \le 20, ο οποίος αντιπροσωπεύει τον αριθμό των δοκιμαστικών περιπτώσεων που ακολουθούν. Κάθε δοκιμαστική περίπτωση παρέχεται σε ένα ζεύγος γραμμών, με τον αριθμό στην πρώτη γραμμή να είναι ο διαιρετέος και ο αριθμός στη δεύτερη γραμμή να είναι ο διαιρέτης. Κάθε γραμμή θα περιέχει έναν θετικό ακέραιο μήκους έως και 80 ψηφίων.

Έξοδος

Για κάθε ζεύγος γραμμών εισόδου, το αρχείο εξόδου σας θα πρέπει να περιέχει ένα ζεύγος γραμμών που αντιπροσωπεύουν το πηλίκο ακολουθούμενο από το υπόλοιπο. Η έξοδος για διαφορετικές περιπτώσεις δοκιμών θα πρέπει να διαχωρίζεται με μία μόνο κενή γραμμή. Η έξοδος σας θα πρέπει να παραλείπει τα μη απαραίτητα μηδενικά.

Παράδειγμα

input

987654321
3456789
33
11
11
33

output

285
2469456

3
0

0
11
  1. Εάν ο διαιρετέος έχει μήκος n ψηφία και ο διαιρέτης έχει μήκος m ψηφία, εξάγετε έναν τύπο ως προς το n και m που προσεγγίζει τον μέγιστο αριθμό μονοψήφιων αφαιρέσεων που εκτελούνται από το πρόγραμμά σας.

Comments

There are no comments at the moment.