chyanog
发表于 2011-12-7 23:55:26
7# wayne
670->YU
671->YV
672->YW
673->YX
674->YY
675->YZ
676->ZA
677->ZB
678->ZC
679->ZD
680->ZE
发现前边的代码有问题
wayne
发表于 2011-12-8 09:47:29
11# chyanog
这样理解的话,那你5楼的代码也有问题.
风云剑
发表于 2011-12-8 11:08:53
更贴切的处理是将A~Z对应27进制的1~26,暗含一个空字串对应于0。 gxqcn 发表于 2011-12-7 21:11 http://bbs.emath.ac.cn/images/common/back.gif
这样也不行。
风云剑
发表于 2011-12-8 11:32:30
1000 -> ALM
10000 -> NTQ
100000 -> EQXE
1000000 -> BDWGO
10000000 -> UVXWK
100000000 -> HJUNYW
1000000000 -> CFDGSXM
正确?
wayne
发表于 2011-12-8 13:12:30
14# 风云剑
按照楼主的代码是:
f =YZ
f =AZA
f =YYZ
f =AZZA
chyanog
发表于 2011-12-8 14:06:52
14# 风云剑
没错!
chyanog
发表于 2011-12-8 14:07:55
12# wayne
的确有问题,开始竟然没发现
风云剑
发表于 2011-12-8 15:47:53
反函数好像不难
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;
}
风云剑
发表于 2011-12-8 15:49:51
正向函数我一直没写出什么好办法,我的方法很土,就是模拟加法。
wayne
发表于 2011-12-8 16:36:42
只能从数学上找规律了:
A-Z ------------> 0----25
AA-ZZ------------> 26----26^2
AAA-ZZZ ----------> 26+26^2-1 ----26^3