找回密码
 点一下
查看: 1339|回复: 14

召唤YD人士,数学帝请进

[复制链接]
发表于 2010-7-24 02:42:54 | 显示全部楼层 |阅读模式
把N组整数合并成一个整数
比如整数A  135,整数B  2598,整数C  21,整数D  961,整数E  854
合并后变成整数F  135259821961854
之后,有什么方法通过整数F,而获得整数F中的被合并的整数A、B、C、D、E??

我用的方法很蛋疼,就是在每个整数前面加上一个一位数的整数,来标明它的长度(位数)
比如本来整数F是 135 2598 21 961 854
用我那蛋疼的方法是 '3'135'4'2598'2'21'3'961'3'854
这样在获得整数F的时候以便得知这个整数中的被合并的整数

但是这个方法太蛋疼了,有没什么YD一点的方法?
发表于 2010-7-24 03:54:49 | 显示全部楼层
ABCD的最大长度是多少呢?
如果仅仅是4,用零补位好了~

这样的F以整数形式存在没意义吧?不能是字符串么?
回复

使用道具 举报

发表于 2010-7-24 08:30:56 | 显示全部楼层
存储多个整数的方法最好还是固定长度,或者进行数位转换,比如你存储123 45,那么分别将123,45都转成9进制,146和50,然后存储为1469509,也就是用9做断位,恢复时截取9之前的部分,从9进制转为10进制
回复

使用道具 举报

发表于 2010-7-24 08:32:41 | 显示全部楼层
最好的方法是用字符串,只是会有字符串泄露
回复

使用道具 举报

发表于 2010-7-24 08:54:21 | 显示全部楼层
固定长度吧
回复

使用道具 举报

发表于 2010-7-24 09:14:43 | 显示全部楼层
同意LS啊,固定长度,这样也好限定最长长度不超过WC的最大值,额,就是溢出
回复

使用道具 举报

发表于 2010-7-24 12:21:21 | 显示全部楼层
超长的数字串最好使用字符串,如果用汉字存储可以达到2048进制,压缩率够好了,效率也比这种实质转换的方法好
回复

使用道具 举报

发表于 2010-7-24 14:50:28 | 显示全部楼层
=,= 楼上是十足的坏淫...
回复

使用道具 举报

发表于 2010-7-24 16:39:03 | 显示全部楼层
实际是推销一个自己的系统
回复

使用道具 举报

发表于 2010-7-24 18:40:43 | 显示全部楼层
我更喜欢林则肥的那个版本
回复

使用道具 举报

 楼主| 发表于 2010-7-25 00:27:02 | 显示全部楼层
那么数学盲求一个10进制转换2~16任意进制的代码或公式
回复

使用道具 举报

发表于 2010-7-25 06:56:08 | 显示全部楼层
原数除以进制数求余,直到商为零,第一次获得的是最低位,最后得到的是最高位,问题在于表达方法上,比如x转为n进制,n小于10就可以用个整数表示,过程就是从0开始的循环,每次都是初始为0的结果y等于自身加上x上次运算的商除以n得余数乘以10的循环次数被幂,注意不要溢出整数范围,转向10进制简单,每位乘以进制的位数减一次方的和就是了,最低位是0次幂
回复

使用道具 举报

发表于 2010-7-25 17:06:54 | 显示全部楼层
不过... WE里即便转换成16进,也还是字符串吧 =,=
根本就没有进制转换这概念吧... jass把所有进制通吃了...
回复

使用道具 举报

发表于 2010-7-26 11:47:58 | 显示全部楼层
不是实际转化进制,
而是用整数来存储

例如我在板凳所说方法

实际那个是需要一个11进制的数,用A(10)来代表隔断每个数,但是整数只是10进制,于是就差了一个,所以反过来想,用九个不同的符号来表达10进制(10个符号表达的)就是10进制转换成9进制了。

更常用的方面是

当函数需要返回多个布尔值(数组),可以作为二进制数转化成10进制整数
这样函数就可以返回boolean数组了

详细可以看看我的迷宫系统,那里用的多
回复

使用道具 举报

发表于 2010-7-28 13:07:56 | 显示全部楼层
未命名.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-25 10:11 , Processed in 0.066962 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表