CCC-04 (2004) - J4 (SEA)

View as PDF

Submit solution

Points: 20 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Python
Simple Encryption Algorithm

Ένας από τους απλούστερους τρόπους κωδικοποίησης ενός μηνύματος είναι να κάνετε μια μετατόπιση γραμμάτων. Για παράδειγμα, εάν μετατοπίσετε τα γράμματα στο αρχικό μήνυμα κατά 5, τότε το A στο αρχικό σας μήνυμα γίνεται F στο κωδικοποιημένο μήνυμα. (B \to G, C \to H, \cdots, T \to Y, U \to Z, V \to A, \cdots, Z \to E). Για να αποκωδικοποιήσετε το μήνυμα, πρέπει απλώς να μετακινηθείτε προς τα πίσω κατά τον ίδιο αριθμό.

Μια ελαφρώς πιο δύσκολη κρυπτογράφηση χρησιμοποιεί μια λέξη-κλειδί για να καθορίσει το μέγεθος της μετατόπισης. Ας υποθέσουμε ότι χρησιμοποιούσατε τη λέξη-κλειδί "ACT". Για να κωδικοποιήσετε το μήνυμα, λαμβάνετε το αρχικό μήνυμα, αφαιρείτε τα πάντα εκτός από τους αλφαβητικούς χαρακτήρες και διαμορφώνετε το μήνυμα σε ένα μπλοκ που έχει το ίδιο πλάτος με τη λέξη-κλειδί. Ακολουθεί ένα δείγμα μηνύματος για κρυπτογράφηση: BANANA & PEEL.

Η αποκλεισμένη έκδοση του μηνύματος εμφανίζεται παρακάτω με τη λέξη-κλειδί ACT ως κεφαλίδα.

A C T
 B   A   N 
 A   N   A 
 P   E   E 
 L 

Τώρα, το μήνυμα κωδικοποιείται χρησιμοποιώντας μια μετατόπιση γραμμάτων. Ωστόσο, αυτή τη φορά δεν είναι μια ενιαία αλλαγή, αλλά θα εξαρτηθεί από το γράμμα της λέξης-κλειδιού στην κορυφή της στήλης. Εάν το γράμμα στην κορυφή της στήλης είναι "A", τότε τα γράμματα σε αυτήν τη στήλη δεν μετατοπίζονται. Εάν το γράμμα είναι "B", τότε τα γράμματα αυτής της στήλης μετατοπίζονται κατά 1 και ούτω καθεξής. Στο παράδειγμα, τα γράμματα στην τρίτη στήλη θα μετατοπιστούν κατά 19, καθώς το "T" είναι το 20^o γράμμα του αλφαβήτου.

Το κωδικοποιημένο μήνυμα είναι:

A C T
 B   C   G 
 A   P   T 
 P   G   X 
 L 

Θα γράψετε ένα πρόγραμμα που θα δέχεται μια λέξη-κλειδί και μια συμβολοσειρά προς κωδικοποίηση. Η λέξη-κλειδί δεν θα έχει ποτέ περισσότερους από 6 χαρακτήρες. Το μήνυμα θα δίνεται πάντα με όλους τους χαρακτήρες κεφαλαίους. Το συνολικό μήκος του μηνύματος δεν θα υπερβαίνει ποτέ τους 60 χαρακτήρες.

Παραδείγματα

input

ACT
BANANA & PEEL

output

BCGAPTPGXL

input

TRICKY
I LOVE PROGRAMMING!

output

BCWXONKFOTKKFZVI

Comments

There are no comments at the moment.