假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。 编写一个函数,输入是任意一个编码,输出这个编码对应的Index.
#include <stdio.h>
#include <string.h>
#define N1 1
#define N2 25
#define N3 (25 * 25)
#define N4 (25 * 25 * 25)
#define C1 N1
#define C2 (N1 + N2)
#define C3 (N1 + N2 + N3)
#define C4 (N1 + N2 + N3 + N4)
int main()
{
char code[5] = {0};
scanf("%s", code);
int index = 0;
switch(strlen(code)){
case 4: index += C1 * (code[3] - 'a') + 1;
case 3: index += C2 * (code[2] - 'a') + 1;
case 2: index += C3 * (code[1] - 'a') + 1;
case 1: index += C4 * (code[0] - 'a');
default: break;
}
printf("%d\n", index);
return 0;
}