假定一种编码的编码范围是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.
输入描述:
输入一个待编码的字符串,字符串长度小于等于100.
输出描述:
输出这个编码的index
示例1
输入
baca
输出
16331
这些数具体是a aa aaa aaaa ... aaay
aab aaba ... aaby
... ... ...
aay aaya .... aayy
ab .....
...
ay ... ayyy
b .....
y...
把输入的字符串放在a[4];里
对输入字符测长度,第一位(a[0]-'a')*(周期即是1+25^1+25^2+25^3)
第二位(a[1]-'a')*(周期1+25^1+25^2)
第三位(a[2]-'a')*(周期是1+25^1)
第四位(a[3]-'a')*(周期是1)
由此编程
#include <stdio.h>
#include <math.h>
#include <string.h>
int main(){
char str[5];
int i,j;
double q;
int sum;
int length;
while(scanf("%s",str)!='EOF'){
sum=0;
length = strlen(str);
for(i=0;i<length;i++){
for(j=i;j<4;j++){
q = pow(25,3-j)*(str[i]-'a'); //几位减去几个n
sum +=q;
}
sum+=1;
}
sum=sum-1;
printf("%d\n",sum);
}
}