7# wayne
670->YU
671->YV
672->YW
673->YX
674->YY
675->YZ
676->ZA
677->ZB
678->ZC
679->ZD
680->ZE
发现前边的代码有问题
11# chyanog
这样理解的话,那你5楼的代码也有问题.
更贴切的处理是将A~Z对应27进制的1~26,暗含一个空字串对应于0。 gxqcn 发表于 2011-12-7 21:11 http://bbs.emath.ac.cn/images/common/back.gif
这样也不行。
1000 -> ALM
10000 -> NTQ
100000 -> EQXE
1000000 -> BDWGO
10000000 -> UVXWK
100000000 -> HJUNYW
1000000000 -> CFDGSXM
正确?
14# 风云剑
按照楼主的代码是:
f =YZ
f =AZA
f =YYZ
f =AZZA
14# 风云剑
没错!
12# wayne
的确有问题,开始竟然没发现
反函数好像不难
int main()
{
char str;
long x=0, i=0;
printf("input string:");
scanf("%s", str);
do
{
x*=26;
x+=str - 'A';
i++;
if(str)
{
x++;
}
}while(str);
printf("%d\n", x);
return 0;
}
正向函数我一直没写出什么好办法,我的方法很土,就是模拟加法。
只能从数学上找规律了:
A-Z ------------> 0----25
AA-ZZ------------> 26----26^2
AAA-ZZZ ----------> 26+26^2-1 ----26^3