Canadian Computing Competition: 2012 Stage 1, Junior #4
Sheldon and Leonard are physicists who are fixated on the BIG BANG theory. In order to exchange secret insights, they have devised a code that encodes UPPERCASE words by shifting their letters forward.
Shifting a letter by positions means to go forward
letters in the alphabet. For example, shifting
B
by positions gives
E
. However, sometimes this makes us go past Z
, the last letter of the alphabet. Whenever this happens we wrap around, treating A
as the letter that follows Z
. For example, shifting Z
by positions gives
B
.
Sheldon and Leonard's code depends on a parameter and also varies depending on the position of each letter in the word. For the letter at position
, they use the shift value of
.
For example, here is how ZOOM
is encoded when . The first letter
Z
has a shift value of ; it wraps around and becomes the letter
F
. The second letter, O
, has and becomes
X
. The last two letters become A
and B
. So Sheldon sends Leonard the secret message: FXAB
Write a program for Leonard that will decode messages sent by Sheldon.
Input Specification
The input will be two lines. The first line will contain the positive integer (
), which is used to compute the shift value. The second line of input will be the word, which will be a sequence of uppercase characters of length at most
.
Output Specification
The output will be the decoded word of uppercase letters.
Sample Input 1
3
FXAB
Output for Sample Input 1
ZOOM
Sample Input 2
5
JTUSUKG
Output for Sample Input 2
BIGBANG
Comments
Taking s mod 26 also works.
Looking for a little help…in the second sample…first letter, s=5*1+5=10. If you move 10 spots to the left of j, you get z. The shift s should be 8. What am I missing? Thanks.
Shift is 3P+K, where position P of 1st letter 'B' is 1. So shift is 3*1+5=8. Therefore J becomes B after left shift.
Thank you
How do the sample outputs work? When I put 3 and FXAB, and do this formula 3×1+3, how does it go to Z? My program got LGMQ, because when you add the 6 to F (at pos 6) you get to 12 which is L?
The question asks you to decode a message, not encode a message.
Is it just my inexperience, or do you have to use a separate
if else
loop for every separate letter?bruh make the word decode 10 times bigger
My submission produced an AC result. But after I tested it with the following input
It gave the following output:
How come?
It is possible for the ASCII character code after decoding to be less than 39. Simply adding 26 to the result will not always make it into a valid letter—sometimes you will need to add a multiple of 26.