数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 3480|回复: 1

这道题有解吗?

[复制链接]
发表于 2017-3-12 10:40 | 显示全部楼层
主贴的解有 9 个:


  1. # List a - b
  2. def setMinus(a,b):
  3.         c = []
  4.         for j in a:
  5.                 if b.count(j) == 0:
  6.                         c.append(j)
  7.         return c

  8. #  123 -> [1,2,3]
  9. def numToSet(n):
  10.         r = n % 10
  11.         s = [r]
  12.         n = (n -r)/10
  13.         while n > 0:
  14.                 r = n % 10
  15.                 n = (n-r)/10
  16.                 if s.count(r) == 0:
  17.                         s.insert(0,r)
  18.         return s

  19. # List  a inteset b
  20. def setCap(a,b):
  21.         s = []
  22.         if len(a) <= len(b):
  23.                 u,v = a,b
  24.         else:
  25.                 u,v = b,a
  26.         for j in u:
  27.                 if v.count(j) > 0:
  28.                         if s.count(j) == 0:
  29.                                 s.append(j)
  30.         return s

  31.        
  32. def tryTen():
  33.         ary = [9,8,7,6,5,4,3,2,1,0]
  34.         nm = 0
  35.         for a in ary:
  36.                 if a == 0:
  37.                         return
  38.                 for b in ary:
  39.                         if b ==a:
  40.                                 continue
  41.                         for c in ary:
  42.                                 if c == a or c == b:
  43.                                         continue
  44.                                 bry = setMinus(ary,[a,b,c])
  45.                                 for u in bry:
  46.                                         if u == 0:
  47.                                                 break
  48.                                         for v in bry:
  49.                                                 if v == u:
  50.                                                         continue
  51.                                                 p = (100*a +10*b +c)*(10*u +v)
  52.                                                 # print "@ %d x %d = %d" % (100*a+10*b+c, 10*u+v,p)
  53.                                                 if p < 10234:
  54.                                                         break
  55.                                                 if len(setMinus(setMinus(ary,[a,b,c,u,v]),numToSet(p))) == 0:
  56.                                                         nm += 1
  57.                                                         print "(%d): %d x %d = %d" % (nm, 100*a+10*b+c, 10*u+v,p)                                               
  58.         return
  59.        
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-12 13:23 | 显示全部楼层
楼上 蔡家雄 的帖子和 elimqiu 的解答都很好!

我已将帖子转贴到“陆老师的《数学中国》园地”。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2026-5-16 20:16 , Processed in 0.394573 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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