把字母数量看成是3个,只有a、b、c,找规律,发现每一位的权值就是1、26、26 * 26……,倒序循环模拟求解即可。

#include <stdio.h>
long long n, m, i, j, k;
char s[18];
int main(){
    scanf("%s", s+1);
    for(i=m=1; s[i]; i++) ;
    for(i--; s[i]; i--){
        k = s[i] - 64;
        n += k*m, m *= 26;
    }//权值依次是1 26 26*26 ... 
    printf("%lld\n", n);
    return 0;
}

作者 crxis

发表回复