回 帖 发 新 帖 刷新版面

主题:一个问题求新解

N的个位是6,而且只有一个6,现在把6移到最高位,是现在数是原数的三倍.
这个问题我已经会编一种超麻烦的方法了,就是用DO-LOOP UNTIL,一个个假设,用变量S累加,每次增加10,100,1000,直到数满足上述条件为止,但程序很麻烦.
我有个同学他用FOR-NEXT,从10000 TO 99999,可是他无法解释为什么从10000开始,大家能解释一下吗?

回复列表 (共10个回复)

沙发

希望大家能给我个简单的方法,再复杂都行.

板凳

只要不太长

3 楼

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 楼

原数为10*n+6,新数为n+6*10^int(lgn)
已知其差值可到一超越方程,然后使用牛顿迭代法求解

使用穷举法,按时万不得已的事情,我不建议任何情况使用穷举法。当然使用的时候也要尽量缩小范围,例如本题,可能范围就是100006到333326之间,100000~100005因为各位不是6而排出,大于333326的个位是6的数333336的三倍超过6位数,所以此上个数不可能的。然后就是步长,应该为10保证个位是6!

5 楼

这个问题很简单,我不久前在论坛里回答过这类题目:
根据已知的条件倒推就是了.

假设原来的数是: ABCDEFG6
它的3倍就应该是:6ABCDEFG

6的3倍当然就是8了,得知G是8
8的3倍是4,得知F是4

那么现在,你知道怎么做了吧?

什么时候结束? 出现一个没有进位的6为止.
希望你能把代码写出来看看,有疑问我再给你范例.
希望你的脑袋不要太大,
一般聪明的女孩脑袋会长得比较大的,
女孩子,学编程太费力气了.......其他的意见我就不便再发表了.

6 楼

谢谢MOZ大哥的提醒,可是很抱歉,我刚出生我的脑袋就很大,大家都说我聪明,我也不是很难看啊。
学编程还好了啦,蛮有意思的。
我们是电脑世家,我总不能让家族在我这一代衰败对不对?

7 楼

哼!别以为在市里竞赛里我就比不过你!

8 楼

moz,我(3楼)不就是像你这么做的.

9 楼

7楼别生气么,生气对身体不好,我们是同学啊

10 楼

切,你认为,我市赛会让你吗?哼,才怪,上次就因为初赛没考好,一点也不理想!

我来回复

您尚未登录,请登录后再回复。点此登录或注册