54 lines
1.3 KiB
C
Executable File
54 lines
1.3 KiB
C
Executable File
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
enum
|
|
{
|
|
NUM_OF_DIGITS = '9' - '0' + 1,
|
|
NUM_OF_LETTERS = 'z' - 'a' + 1,
|
|
BIT_MASK_1 = 0b111011,
|
|
BIT_MASK_2 = 0b001000,
|
|
MAX_NUM = 64,
|
|
};
|
|
|
|
int
|
|
main(void)
|
|
{
|
|
int c;
|
|
|
|
while ((c = getchar()) != EOF) {
|
|
int code = 0;
|
|
|
|
if (c <= '9' && c >= '0') {
|
|
code = c - '0' + 1;
|
|
} else if (c <= 'z' && c >= 'a') {
|
|
code = c - 'a' + NUM_OF_DIGITS + 1;
|
|
} else if (c <= 'Z' && c >= 'A') {
|
|
code = c - 'A' + NUM_OF_DIGITS + NUM_OF_LETTERS + 1;
|
|
}
|
|
|
|
if (code == 0) {
|
|
continue;
|
|
}
|
|
|
|
code = code & BIT_MASK_1;
|
|
code ^= BIT_MASK_2;
|
|
|
|
int res = 0;
|
|
if (code <= NUM_OF_DIGITS && code >= 1) {
|
|
res = code - 1 + '0';
|
|
} else if (code <= NUM_OF_DIGITS + NUM_OF_LETTERS && code >= NUM_OF_DIGITS + 1) {
|
|
res = code + 'a' - NUM_OF_DIGITS - 1;
|
|
} else if (code <= NUM_OF_DIGITS + NUM_OF_LETTERS * 2 && code >= NUM_OF_DIGITS + NUM_OF_LETTERS + 1) {
|
|
res = code + 'A' - NUM_OF_DIGITS - NUM_OF_LETTERS - 1;
|
|
} else if (code == 0) {
|
|
res = '@';
|
|
} else if (code == MAX_NUM - 1) {
|
|
res = '#';
|
|
}
|
|
|
|
putchar(res);
|
|
}
|
|
|
|
return 0;
|
|
}
|