CCO-25 (2025) - 3 (Balanced Integer)
View as PDFΠεριγραφή προβλήματος
Επειδή το CCO χρησιμοποιεί συχνά ακέραιους αριθμούς, η Alice πρέπει να μάθει για τους ακέραιους αριθμούς! Ένας θετικός ακέραιος αριθμός μπορεί να γραφτεί στη βάση
ως η ακολουθία
, αν ισχύουν τα ακόλουθα:
• Κάθε ψηφίο βρίσκεται μεταξύ
και
, συμπεριλαμβανομένων των άκρων.
• .
• .
Για παράδειγμα, ο ακέραιος αριθμός στη βάση
είναι η ακολουθία
, επειδή
.
Ένας ακέραιος αριθμός λέγεται ισορροπημένος στη βάση
αν, όταν γραφτεί στη βάση
, ο μέσος όρος των ψηφίων του είναι
.
Για παράδειγμα, ο αριθμός είναι ισορροπημένος στη βάση
, επειδή
.
Η Alice μπορεί εύκολα να βρει ακέραιους αριθμούς που είναι ισορροπημένοι στη βάση . Ωστόσο, δυσκολεύεται να βρει ακέραιους αριθμούς που είναι ισορροπημένοι με πολλούς διαφορετικούς τρόπους. Δεδομένων των
και
, βοηθήστε την Alice να βρει τον ελάχιστο ακέραιο αριθμό
ώστε:
• Ο να είναι ισορροπημένος στη βάση
, για κάθε
.
• .
Είσοδος
Η πρώτη γραμμή της εισόδου περιέχει δύο ακέραιους αριθμούς και
, χωρισμένους με ένα κενό (
).
Εγγυάται ότι η απάντηση δεν υπερβαίνει το .
Ο παρακάτω πίνακας δείχνει πώς κατανέμονται οι διαθέσιμοι 25 βαθμοί:
| Βαθμοί | Όρια του B | Όρια του N |
| 2 | ||
| 6 | ||
| 2 | Χωρίς πρόσθετους περιορισμούς | |
| 9 | ||
| 4 | Χωρίς πρόσθετους περιορισμούς | |
| 2 | Χωρίς πρόσθετους περιορισμούς |
Έξοδος
Εκτυπώστε τον ελάχιστο ακέραιο αριθμό που περιγράφεται στην εκφώνηση.
Παράδειγμα 1
Είσοδος
4 100
Έξοδος
141
Επεξήγηση εξόδου
Ο αριθμός στη βάση
είναι
. Ο μέσος όρος των ψηφίων είναι
. Επομένως, ο
είναι ισορροπημένος στη βάση
.
Ο αριθμός στη βάση
είναι
. Ο μέσος όρος των ψηφίων είναι
. Επομένως, ο
είναι ισορροπημένος στη βάση
.
Ο αριθμός στη βάση
είναι
. Ο μέσος όρος των ψηφίων είναι
. Επομένως, ο
είναι ισορροπημένος στη βάση
.
Τέλος, .
Παράδειγμα 2
Είσοδος
7 10000000000
Έξοδος
16926961207710
Υπόδειξη
Μπορείτε να χρησιμοποιήσετε τα παρακάτω αποσπάσματα κώδικα ως μέρος της λύσης σας.
// Σημαντικό: Αν το x είναι 0, το αποτέλεσμα δεν ορίζεται.
int base_2_length(unsigned long long x) {
return 64-__builtin_clzll(x);
}
int base_2_sum(unsigned long long x) {
return __builtin_popcountll(x);
}
Comments