主题:一个问题求新解
&佑慧妹妹&
[专家分:660] 发布于 2007-04-15 09:29:00
N的个位是6,而且只有一个6,现在把6移到最高位,是现在数是原数的三倍.
这个问题我已经会编一种超麻烦的方法了,就是用DO-LOOP UNTIL,一个个假设,用变量S累加,每次增加10,100,1000,直到数满足上述条件为止,但程序很麻烦.
我有个同学他用FOR-NEXT,从10000 TO 99999,可是他无法解释为什么从10000开始,大家能解释一下吗?
回复列表 (共10个回复)
沙发
&佑慧妹妹& [专家分:660] 发布于 2007-04-15 09:30:00
希望大家能给我个简单的方法,再复杂都行.
板凳
&佑慧妹妹& [专家分:660] 发布于 2007-04-15 09:31:00
只要不太长
3 楼
Matodied [专家分:7560] 发布于 2007-04-18 22:18:00
CLS
DIM a(500) '假设不超过500位
n=6
DO
q=n MOD 4:p=n\4
i=i+1:a(i)=p
m=q*10+p
IF m=24 THEN EXIT DO
LOOP
FOR j=1 TO i:s$=s$+LTRIM$(STR$(s(j))):NEXT j
PRINT s$+"6":END
4 楼
老大徒伤悲 [专家分:29120] 发布于 2007-04-19 13:14:00
原数为10*n+6,新数为n+6*10^int(lgn)
已知其差值可到一超越方程,然后使用牛顿迭代法求解
使用穷举法,按时万不得已的事情,我不建议任何情况使用穷举法。当然使用的时候也要尽量缩小范围,例如本题,可能范围就是100006到333326之间,100000~100005因为各位不是6而排出,大于333326的个位是6的数333336的三倍超过6位数,所以此上个数不可能的。然后就是步长,应该为10保证个位是6!
5 楼
moz [专家分:37620] 发布于 2007-04-23 02:08:00
这个问题很简单,我不久前在论坛里回答过这类题目:
根据已知的条件倒推就是了.
假设原来的数是: ABCDEFG6
它的3倍就应该是:6ABCDEFG
6的3倍当然就是8了,得知G是8
8的3倍是4,得知F是4
那么现在,你知道怎么做了吧?
什么时候结束? 出现一个没有进位的6为止.
希望你能把代码写出来看看,有疑问我再给你范例.
希望你的脑袋不要太大,
一般聪明的女孩脑袋会长得比较大的,
女孩子,学编程太费力气了.......其他的意见我就不便再发表了.
6 楼
&佑慧妹妹& [专家分:660] 发布于 2007-05-01 16:44:00
谢谢MOZ大哥的提醒,可是很抱歉,我刚出生我的脑袋就很大,大家都说我聪明,我也不是很难看啊。
学编程还好了啦,蛮有意思的。
我们是电脑世家,我总不能让家族在我这一代衰败对不对?
7 楼
Matodied [专家分:7560] 发布于 2007-05-03 08:32:00
哼!别以为在市里竞赛里我就比不过你!
8 楼
Matodied [专家分:7560] 发布于 2007-05-03 08:43:00
moz,我(3楼)不就是像你这么做的.
9 楼
&佑慧妹妹& [专家分:660] 发布于 2007-05-03 11:31:00
7楼别生气么,生气对身体不好,我们是同学啊
10 楼
&佑慧妹妹& [专家分:660] 发布于 2007-05-03 11:32:00
切,你认为,我市赛会让你吗?哼,才怪,上次就因为初赛没考好,一点也不理想!
我来回复