设为首页收藏本站

 找回密码
 注册
搜索
楼主: 喜欢

[其他] 【动脑筋】数学魔术

[复制链接]
  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 3757 天

    [LV.Master]无

     楼主| 发表于 2014-8-28 04:11:13 | 显示全部楼层
    独角兽 发表于 2014-8-27 02:52
    0, 9, 18, 27, 36, 45, 54, 63, 72, 81

    1) ABCD=9369: abcd=4321
    独角兽  喜欢gg,我这是很严格的,呵呵。。。


    那你把你的推理过程写出来?就当给学生上课,要能把不懂的人教懂哦。

    该用户从未签到

    发表于 2014-8-28 04:25:31 | 显示全部楼层
    本帖最后由 独角兽 于 2014-8-28 05:14 编辑
    独角兽 发表于 2014-8-27 15:52
    0, 9, 18, 27, 36, 45, 54, 63, 72, 81

    1) ABCD=9369: abcd=4321


    喜欢gg喜欢我,我就接着写了。

    最近电脑上爱坛少了,一般就是手机扫一眼,所以错过了好些帖子,日志什么的。评论和回复更是少了。昨晚才看见喜欢gg的这个帖子。看了题目,我确定一定以及肯定自己是一定会做的,可是写起来应该怪麻烦的,我就没算,然后就该干啥干啥去了。

    可是,俺这一颗热爱趣味数学的真心呀,准备睡觉的时候突然又忍不住想把这题作出来。再后来觉得自己的算法还是有特别之处的,就忍不住写出来显摆了。

    第一段:

    俺觉得吧,这题的正道是逆向思维,也就是发现8889=10000-1111. 然后顺着这个思路下去,从后往前一位一位的推,把借位搞清楚了,就没问题了。同学们纷纷顺着这个思路给出了算法,有些表述的简洁一些,有些啰嗦一些,有些还有点儿小疏漏,但基本上都算是答出来了。

    第二段:

    给大家介绍一下独角兽的正向思维,邪派招术吧。

    从8889到1111是此题的关键,但我当时第一感觉是8889会变成9999。9 为什么好呢?9乘以任何一个各位的数字尾数各不相同。是一一对应的关系。换句话说,任何一个ABCD我都能张口说出d的值来。正是因为想把8889变成9999,我一下困意全无,拿出纸笔就开练了。

    我在解题的第一行给出了0到9与9的乘积就是想看看有没有人能够跟我想到同一个方向上去。

    假如不考虑进位, abcd×8889
    个位=9×d
    十位=9×c+8×d
    百位=9×b+8×c+8×d
    千位=9×a+8×b+8×c+8d

    这时候个位数乘9的另一个伟大的特性派上了用场,那就是乘积的十位数其实是比它本身小1. (注意0还是0)
    这个数就是进位的。

    考虑进位后:十位=9×c+8×d+(d-1)=9×(c+d)-1  (这个1就是我前面计算过程提示中的+1),然后又可以用乘9的尾数定位出c+d的尾数了。

    百位=9×b+8×c+8×d + (c+d-1)=9×(b+c+d)-1  (到了这里停一下,如果上面(c+d)已经不是个位数字了,咋办?直觉告诉我,把10位再加上去就行了。于是,我用abcd=9999这个极限值验证了一下,果然如此。)

    剩下的就是心算九九表和加减法了。5秒钟一个题没问题,但会出错,因为乘法的这个对应关系还是没有加法的直接。

    算完了以后回帖,写答案之前心里没底,excel验算了一下,发现第10题居然错了。于是猜(+2)不是从20开始的,而是从19开始的。分别验算了18,19,20的情况,发现确实如此。猜测如果(+3)应该是从28开始,可惜只有(b+c+d)最大27,没法验算了。

    以上,从9的乘法出发找出了这个所谓魔术的解法,心满意足的睡觉去了。。。

    评分

    参与人数 1爱元 +3 收起 理由
    喜欢 + 3 油菜

    查看全部评分

    该用户从未签到

    发表于 2014-8-28 05:09:02 | 显示全部楼层
    独角兽 发表于 2014-8-28 04:25
    喜欢gg习惯我,我就接着写了。

    最近电脑上爱坛少了,一般就是手机扫一眼,所以错过了好些帖子,日志什么 ...

    另外,我之所以第一反应会做,但懒得做,有一个原因是我前一段看了一本编程的书想拓展自己的思维方式。所以,我其实想用编程的方法做这个题。

    int a=b=c=d=0, M=ABCD, N=8889

    while (d*9)%10 != M%10
    {
    d++;
    if d ==10
    输出:搞错了,无解!换个数再试试?
    end; //记不清是不是用end了,反正就是程序结束,收工了
    }
    while ((10*c+d)*89)%100 !=M%100
    {
    c++;
    if c ==10
    输出:搞错了,无解!换个数再试试?
    end; //记不清是不是用end了,反正就是程序结束,收工了
    }

    while ((100*b+10*c+d)*889)%1000 !=M%1000
    {
    b++;
    if b ==10
    输出:搞错了,无解!换个数再试试?
    end; //记不清是不是用end了,反正就是程序结束,收工了
    }
    while ((1000*a+100*b+10*c+d)*8889)%10000 != M
    {
    a++;
    if a ==10
    输出:搞错了,无解!换个数再试试?
    end; //记不清是不是用end了,反正就是程序结束,收工了
    }

    最后输出 abcd=1000*a+100*b+10*c+d Oh yeah!

    The end!

    出错信息是后来想起来加上去的。具体编程的语言我记不太清楚,但思路是前两个月看编程书的收获。感觉自己很帅。哈哈。@holycow 神牛师傅来鉴定一下,这个程序编得够简洁吧

  • TA的每日心情
    开心
    2024-1-5 22:47
  • 签到天数: 1231 天

    [LV.10]大乘

    发表于 2014-8-28 05:57:00 | 显示全部楼层
    喜欢 发表于 2014-8-27 05:03
    可是您这算法的原理何在呢?能解释到俺(们?)能听懂的程度么?

    看来脑袋瓜好使的人真不少啊!这么绕的 ...

    抱歉,文笔不好,写算法用的时间比想出来的时间还长,也没说明白。好像匆忙中也没有贴全。

    步骤为
    0)        得到四位数MNOP=10000-ABCD
    例如以上部分题目
    1,ABCD=9369得 MNOP=0631
    2,ABCD=2412得 MNOP=7588
    3,ABCD=7889得 MNOP=2111
    10,ABCD=5992得 MNOP=4008

    1)        d=P:
    1,ABCD=9369得 MNOP=0631; d=1;
    2,ABCD=2412得 MNOP=7588; d=8;
    3,ABCD=7889得 MNOP=2111; d=1;
    10,ABCD=5992得 MNOP=4008;d=8;

    2)        c=O-d, 如c小于0则加上10:  
    1,ABCD=9369得 MNOP=0631;d=1;  c=3-1=2;
    2,ABCD=2412得 MNOP=7588;d=8;  c=8-8=0;
    3,ABCD=7889得 MNOP=2111;d=1;  c=1-1=0;
    10,ABCD=5992得 MNOP=4008;d=8;c=0-8+10=2;

    3)        b=N-n, 其中n 是c+d的各位数字之和。如b小于0则加上10:  
         例如 c=7, d=8 则c+d=15,其各位数字之和 n=1+5=6; 如c=8,d=2, c+d=10, n=1
    1,ABCD=9369得 MNOP=0631;d=1; c=2; n=3, b=6-3=3
    2,ABCD=2412得 MNOP=7588;d=8; c=0; n=8, b=5-8+10=7
    3,ABCD=7889得 MNOP=2111;d=1; c=0; n=1, b=1-1=0
    10,ABCD=5992得 MNOP=4008;d=8;c=2;n=1,b=0-1+10=9
    4)        a=M-m, 其中m 是b+c+d的各位数字之和。如a小于0则加上10:  
    1,ABCD=9369得 MNOP=0631;d=1; c=2; b=3; m=0-6+10=4, 最后 abcd=4321
    2,ABCD=2412得 MNOP=7588;d=8; c=0; b=7; m=6,a=1,abcd=1708
    3,ABCD=7889得 MNOP=2111;d=1; c=0; b=0; m=1,a=1,abcd=1001
    10,ABCD=5992得 MNOP=4008;d=8;c=2;b=9, m=1, a=3, abcd=3928

    注:d=8;c=2;b=9, 其各位数字之和要反复加到只剩一位: 8+2+9=19 =》10 =》1

    上面36楼似乎有点typo.
    6) ABCD=8059,应为abcd=2531.
    7) ABCD=8002, abcd=2018

    回头写原理

    评分

    参与人数 1爱元 +6 收起 理由
    喜欢 + 6 给力

    查看全部评分

  • TA的每日心情
    奋斗
    2022-2-8 01:13
  • 签到天数: 171 天

    [LV.7]分神

    发表于 2014-8-28 07:36:17 | 显示全部楼层
    算法:
    如果 D 等于 0:
        d = 0
        c = D-C
    如果 D 不等于 0:
       d = 10-D
       c = D-C-1

    如果 c 小于 0:
       b = C-B-1
       同时更新 c: c = c+10
    如果 c 大于 0:
       b = C-B
       c 不变

    如果  b 小于 0:
       a = B-A-1
       同时更新 b: b = b+10
    如果 b 大于 0:
       a = B-A
       b 不变

    如果 a 小于 0:
       更新 a: a = a+10
    ====================== 下面使用python实现上面算法,以及运行结果 ==============
    def multiply8889(digits):
        A,B,C,D = int(digits[0]),int(digits[1]),int(digits[2]),int(digits[3])
        if D!= 0:
            d = 10-D
            c = D-C-1
        else:
            d = 0
            c = -C

        if c <0:
            c = c+10
            b = C-B-1
        else:
            b = C-B

        if b <0:
            b = b+10
            a = B-A-1
        else:
            a = B-A
            
        if a<0:
            a = a+10

        number = a*1000+b*100+c*10+d
        print 'answer:'+digits+'=>'+str(number)
        print 'check:'+'8889''*'+str(number)+'='+str(8889*number)
        return
       
    multiply8889('9369')
    multiply8889('2412')
    multiply8889('7889')
    multiply8889('9160')
    multiply8889('0668')
    multiply8889('8059')
    multiply8889('8002')
    multiply8889('2908')
    multiply8889('5094')
    multiply8889('5992')


    ======== 运行结果 =======================
    answer:9369=>4321
    check:8889*4321=38409369

    answer:2412=>1708
    check:8889*1708=15182412

    answer:7889=>1001
    check:8889*1001=8897889

    answer:9160=>2440
    check:8889*2440=21689160

    answer:0668=>6012
    check:8889*6012=53440668

    answer:8059=>2531
    check:8889*2531=22498059

    answer:8002=>2018
    check:8889*2018=17938002

    answer:2908=>6172
    check:8889*6172=54862908

    answer:5094=>5846
    check:8889*5846=51965094

    answer:5992=>3928
    check:8889*3928=34915992

    点评

    太膜拜二当家的啦!  发表于 2014-8-28 11:04

    评分

    参与人数 1爱元 +6 收起 理由
    喜欢 + 6 精彩

    查看全部评分

  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 3757 天

    [LV.Master]无

     楼主| 发表于 2014-8-28 09:50:38 | 显示全部楼层
    不爱吱声 发表于 2014-8-27 18:36
    算法:
    if D 等于 0:
        d = 0

    耶!你是俺滴知音~俺基本上就是这么做的。

    不过,你是否需要阐明一下你的算法呢?如果有人说不懂,你怎么办?
  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 3757 天

    [LV.Master]无

     楼主| 发表于 2014-8-28 09:55:22 | 显示全部楼层
    黑洞的颜色 发表于 2014-8-27 16:57
    抱歉,文笔不好,写算法用的时间比想出来的时间还长,也没说明白。好像匆忙中也没有贴全。

    步骤为

    你这个好复杂,需要慢慢消化。尤其不明觉厉的是
    其各位数字之和要反复加到只剩一位: 8+2+9=19 =》10 =》1
    这部分是怎么来的?做什么用的?
  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 3757 天

    [LV.Master]无

     楼主| 发表于 2014-8-28 10:00:46 | 显示全部楼层
    独角兽 发表于 2014-8-27 15:25
    喜欢gg喜欢我,我就接着写了。

    最近电脑上爱坛少了,一般就是手机扫一眼,所以错过了好些帖子,日志什么 ...

    你这个我也得慢慢消化~
  • TA的每日心情
    奋斗
    2022-2-8 01:13
  • 签到天数: 171 天

    [LV.7]分神

    发表于 2014-8-28 10:23:31 | 显示全部楼层
    喜欢 发表于 2014-8-27 19:50
    耶!你是俺滴知音~俺基本上就是这么做的。

    不过,你是否需要阐明一下你的算法呢?如果有人说不 ...


    简单说一下,

    abcd*8889 = abcd*10000-abcd*1111
    不考虑借位的话
    (1)D = 10-d => d=10-D
    (2)C = 10-d-c
             (1)-(2)=> c=D-C
    (3)B = 10-d-c-b
            (2)-(3)=> b=C-B
    (4)A = 10-d-c-b-a
             (3)-(4)=> a=B-A

    然后考虑借位,就是最后的算法。


  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 3757 天

    [LV.Master]无

     楼主| 发表于 2014-8-28 10:53:37 | 显示全部楼层
    不爱吱声 发表于 2014-8-27 21:23
    简单说一下,

    abcd*8889 = abcd*10000-abcd*1111

    行,有你说的垫底,我可以不说什么了!
    花哦!

    该用户从未签到

    发表于 2014-8-28 11:39:37 | 显示全部楼层
    不爱吱声 发表于 2014-8-28 10:23
    简单说一下,

    abcd*8889 = abcd*10000-abcd*1111

    二当家的厉害,觉得这就是正道终极解法了。

    有一点说得不太准确,10-x不是不考虑借位,是考虑了最正常的只借一位的情况。然后对特殊情况进行修改,比如 D=0, d=0,不需借位;x>=10,多借一位。但是,是不是漏掉了x>=20的修正呀?

    二当家的用你的程序算一下ABCD=1111,看看答案是多少?

    另外,都算到这份上了,不用编程,口算就行了。编程最大的优势就是傻骡子计算机不怕累,让它去排除去吧。咱们就不用动脑筋推导了
  • TA的每日心情
    奋斗
    2022-2-8 01:13
  • 签到天数: 171 天

    [LV.7]分神

    发表于 2014-8-28 13:05:33 | 显示全部楼层
    独角兽 发表于 2014-8-27 21:39
    二当家的厉害,觉得这就是正道终极解法了。

    有一点说得不太准确,10-x不是不考虑借位,是考虑了最正常 ...


    不考虑借位的意思是不用考虑借位的不同情况,不是不借位,呵呵,写得着急了点.

    编这种小程序也就是一两分钟的事儿,当时原本正在编其他的程序,随手就写了,这也是为什么我喜欢python的原因.

    程序是为了比较方便地验证算法,省得还得自己算,10个还容易,成百上千的验算就不容易了,好处是可以一劳永逸地把所有的数都验证了,而不仅仅局限于这10个,总的来说还是程序更方便啊.

    你可能想多了,用这种递进似算法不会出现借2位的情况阿,因为后一个与前一个只差一个数位.

    我刚刚用我的算法程序遍历了所有的可能的数,全部都计算正确了.(程序见下面)

    =======================遍历程序=====================
    def multiply8889(digits):
        A,B,C,D = int(digits[0]),int(digits[1]),int(digits[2]),int(digits[3])
        if D!= 0:
            d = 10-D
            c = D-C-1
        else:
            d = 0
            c = -C

        if c <0:
            c = c+10
            b = C-B-1
        else:
            b = C-B

        if b <0:
            b = b+10
            a = B-A-1
        else:
            a = B-A
            
        if a<0:
            a = a+10

        number = a*1000+b*100+c*10+d
        return number

    def check(digits):
        number = multiply8889(digits)
        if digits != str(8889*number)[-4:]: # last four digits
            return False
        else:
            return True

    def print_result(digits):
        number = multiply8889(digits)
        print 'answer:'+digits+'=>'+str(number)
        print 'check:'+'8889''*'+str(number)+'='+str(8889*number)
       
    anywrong = False
    for i0 in range(1,10):
      for i1 in range(10):
        for i2 in range(10):
          for i3 in range(10):
               digits = str(i0)+str(i1)+str(i2)+str(i3)
               if not check(digits):
                   anywrong = True
                   break

    if not anywrong:
        print "The algorithm is correct!"
    else:
        print "The algorithm is incorrect!"


    print_result('1111')
    =======================最后结果=========================
    The algorithm is correct!


    answer:1111=>9999
    check:8889*9999=88881111

    该用户从未签到

    发表于 2014-8-28 13:35:18 | 显示全部楼层
    不爱吱声 发表于 2014-8-28 13:05
    不考虑借位的意思是不用考虑借位的不同情况,不是不借位,呵呵,写得着急了点.

    编这种小程序也就是一两分钟 ...

    呵呵,牛!

    我没用你的算法算,所以看下来觉得好像少了一种情况似的。如果没少的话,我还得再去想为啥20多也不例外。我估摸着是每次10啊10的补上了,就没20啥事了。

    我不会编程,所以觉得编程麻烦。但是现在觉得用程序算胜在思路简单,步骤麻烦点其实没啥。思路复杂了,更容易想错,或者想不出来。还似乎计算机厉害,跟少林寺罗汉拳似的。
  • TA的每日心情
    奋斗
    2022-2-8 01:13
  • 签到天数: 171 天

    [LV.7]分神

    发表于 2014-8-28 13:45:19 | 显示全部楼层
    独角兽 发表于 2014-8-27 23:35
    呵呵,牛!

    我没用你的算法算,所以看下来觉得好像少了一种情况似的。如果没少的话,我还得再去想为啥20 ...


    如果你想学习一门编程语言就推荐你学python,是最接近自然语言的,而且数据结构丰富,有丰富的库,我现在工作中编程序基本全靠python搞定,可以实现非常复杂的功能,不管是科学计算,还是用户接口界面都可以.而且完全免费哦.

    放弃你学的 C 吧,python 走起.https://www.python.org/

    我使用pythonxy package写工作上用的软件:
    http://code.google.com/p/pythonxy/

    该用户从未签到

    发表于 2014-8-28 14:07:26 | 显示全部楼层
    不爱吱声 发表于 2014-8-28 13:45
    如果你想学习一门编程语言就推荐你学python,是最接近自然语言的,而且数据结构丰富,有丰富的库,我现在工作 ...

    嘿嘿,其实我是看了一本java教程。当然,记住多少我就不知道了。就是觉得我怎么能不会编程呢,感觉像是放弃了很大一片天空似的。下面有空我再想看编程的东西就看这个蟒蛇。你和轧叔都这么喜欢蟒蛇呢。
  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 3757 天

    [LV.Master]无

     楼主| 发表于 2014-8-28 21:27:52 | 显示全部楼层
    不爱吱声 发表于 2014-8-28 00:05
    不考虑借位的意思是不用考虑借位的不同情况,不是不借位,呵呵,写得着急了点.

    编这种小程序也就是一两分钟 ...

    这个太棒了!
    (等我有分额了再评分~)
    本来我还想写个程序呢(好久没写了,若写还得费点儿工夫),这下也不用写了。

    最喜欢这样严格的思路了,滴水不漏,童叟无欺,久经考验!
  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 3757 天

    [LV.Master]无

     楼主| 发表于 2014-8-28 21:48:59 | 显示全部楼层
    独角兽 发表于 2014-8-27 22:39
    二当家的厉害,觉得这就是正道终极解法了。

    有一点说得不太准确,10-x不是不考虑借位,是考虑了最正常 ...

    二当家的编程,一是为了严格——电脑不允许手误、口误之类,你说的每一个字都必须对,它才认可;二是为了遍历——所有可能的题都对了,你出题的还有什么说的?那算法是肯定对了!
  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 3757 天

    [LV.Master]无

     楼主| 发表于 2014-8-28 23:42:32 | 显示全部楼层
  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 3757 天

    [LV.Master]无

     楼主| 发表于 2014-8-29 02:12:11 | 显示全部楼层
    本帖最后由 喜欢 于 2014-8-28 13:20 编辑

    解释一下我那算法的推理过程——第四重玩法。

    原理如下:

    设有四位正整数形如abcd,将其乘以8889,则有

    abcd*8889=abcd*(10000-1000-100-10-1)=
    abcd0000
    - abcd000
    -   abcd00
    -     abcd0
    -       abcd
    -------------------
           ABCD

    设其结果的末尾4位形如ABCD,我们只看后面黑体字部分的四位数,其每一列的减法。则有

    最初,十位、百位、千位肯定都被借位1,变成9,而个位得到10,因此,

    D这里的被减数肯定是10,
    D=(10-d)
    =>d=10-D

    C这里的被减数肯定是9,
    当(d+c)<=9,
    C=9-d-c=(10-1)-d-c=(10-1)-(10-D)-c=D-c-1
    =>c=D-C-1
    当(d+c)>9,向前借位,+10再减,(+10或-10只影响前面一位,不影响本位的数字。我们称为“公理1”。)
    C=10+9-d-c=10+(10-1)-(10-D)-c=D-c-1+10
    =>c=(D-C-1)+10=D-C-1(公理1)
    =>c=D-C-1

    B这里的被减数,当(d+c)<=9,是9;当(d+c)>9,是8(因为又被借过1),
    当(d+c)<=9,
    B=9-d-c-b=(10-1)-d-c-b=(10-1)-(10-D)-(D-C-1)-b=C-b
    =>b=C-B
    当(d+c)>9,
    B=8-d-c-b=(10-1-1)-d-c-b=(10-1-1)-(10-D)-(D-C+9)-b=C-b-11
    =>b=C-B-1-10=C-B-1(公理1)
    =>b=C-B-1

    万位,A这里,被减数-d-c-b-a=A,

    ● 当(d+c)<=9,关键数是9,
    当(d+c+b)<=9,被减数保持为9;当(d+c+b)>9,被减数是8(又被借过1),

    · 当(d+c)<=9且(d+c+b)<=9,
    A=9-d-c-b-a=(10-1)-d-c-b-a=(10-1)-(10-D)-(D-C-1)-(C-B)-a=B-a
    =>a=B-A
    例1:ABCD=8059,则abcd=2531——(d+c)<=9, (d+c+b)<=9

    · 当(d+c)<=9且(d+c+b)>9,
    A=8-d-c-b-a=(10-1-1)-d-c-b-a=(10-1-1)-(10-D)-(D-C-1)-(C-B)-a=B-a-1
    =>a=B-A-1
    例2:ABCD=3904,则abcd=5136——(d+c)<=9, (d+c+b)>9

    ● 当(d+c)>9,因为(d+c+b)肯定>9,故万位至少曾再被借位1,即A这里的被减数,至多是8,也许是7。所以,此时用来判断的关键数是18,
    当(d+c+b)<=18(肯定>9),被减数是8(仅被借位1);当(d+c+b)>18,被减数是7(曾被借位2),

    · 当(d+c)>9且(d+c+b)<=18
    A=8-d-c-b-a=(10-1-1)-d-c-b-a=(10-1-1)-(10-D)-(D-C-1)-(C-B-1)-a=B-a
    =>a=B-A
    例3:ABCD=6091,则abcd=4819——(d+c)>9, (d+c+b)<=18

    · 当(d+c)>9且(d+c+b)>18,
    A=7-d-c-b-a=(10-1-2)-d-c-b-a=(10-1-2)-(10-D)-(D-C-1)-(C-B-1)-a=B-a-2+1
    =>a=B-A-1
    例4:ABCD=1994,则abcd=7946——(d+c)>9, (d+c+b)>18


    证明完毕。
  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 3757 天

    [LV.Master]无

     楼主| 发表于 2014-8-29 10:53:05 | 显示全部楼层
    接着来。这次是爆炸性的答案!

    俺说过,俺把这题目给了一个朋友——一直被我奉为聪明人的朋友。果然不负我望。不到十分钟,答案回来了,就两句话:

    把ABCD乘以9;

    8889x9=80001。


    我告诉ta我的算法后,又给我一句话,长一点的:

    你用竖式做“ABCD0-ABCD”,看看跟你那算法一样不一样?

    我傻了,我服了!

    我知道什么叫巧劲,什么叫窍门,什么叫题眼了!

    我知道什么叫豁然开朗了!

    我知道世界上真的存在聪明人了!


    于是我的算法被简化了,直接就减了啊,从前往后就能说出答案了啊!(只要看后一位是否够减/是否借1就行了!)不用管什么(d+c)、(d+c+b)的值了!

    即使最极端的ABCD=5992,也能立刻算出ABCD=3928来!



    手机版|小黑屋|Archiver|网站错误报告|爱吱声   

    GMT+8, 2026-10-24 08:37 , Processed in 0.045286 second(s), 21 queries , Gzip On.

    Powered by Discuz! X3.5

    © 2001-2026 Discuz! Team.

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