作者jurian0101 (Hysterisis)
看板puzzle
标题Re: [中译] Puzzleup 2012 (19) Palindromic Number
时间Fri Nov 30 21:52:49 2012
※ 引述《LPH66 (圬琐)》之铭言:
: 题目网址: http://www.puzzleup.com/2012/?home
: http://www.puzzleup.com/2012/puzzle/?260
: 答题时限: 11月29日7PM-比赛结束(约12月12日)
: 加分时限: 11月29日7PM-12月4日6:59PM
: 答对可得基本分100分。答案可上传5次,每改1次答案从基本分扣20分。
: 另有两种加分: 1. 加分时限内答对。例:第N天答对,可加(6-N)分。
: 2. 题目越困难,加分越多。例:这题有n%的人答错,答对者加n分。
: ◆Palindromic Number
: Using all 10 digits (0-9) only once, one 1-digit, one 2-digit, one 3-digit,
: and one 4-digit numbers are formed. When these four numbers are multiplied
: the result is a palindromic number. What can be the maximum value for this
: palindromic number?
: 使用 0 到 9 十个数字各一次,构成一位数、两位数、三位数及四位数各一个。
: 当这四个数相乘会得到一个回文数(译注)。问这个回文数最大多少?
: 译注:回文数是指正读反读都相同的数,如 12321。
落落长的一行解 <<<<这叫哪门子一行
f = (1000 #1 + 100 #2 + 10 #3 + #4) (100 #5 +10 #6 + #7) (10 #8 + #9) #10 &;
Max[
f@@@Select[
Cases[Permutations[Range[0, 9]],
{Except[0], _, _, Except[0 | 5],
Except[0], _, Except[0 | 5],
Except[0], Except[0 | 5],
Except[0 | 5]}],
Reverse[IntegerDigits[f @@ #]] == IntegerDigits[f @@ #] &
]]
好我承认说不上是一行解决 = = 总之起码有个办法(虽然称为暴力解)可确知答案了
再回头来揣摩一下,能不能别跑10!次判别多麽丑陋的方法啊。
- - - - 洞洞手洞洞脑的分隔线 - - - -
乘积最大是十位数9xxx*8xx*7x*6 = 3 xxx xxx xxx,
我决定起初要很乐观的假设结果的乘积是十位数,绝不是因为偷看答案
而是因为十位数又是回文数,它一定是11的倍数多了这个线索。
排列出的 一位与两位不可能是11倍数,因此 四位数 或 三位数是11的倍数。
此线索保留
10位数的乘积以1,2,3开头,但1,3不合,因为{1,3,5,7,9}挑四个在个位,不可能变出1或3
故只有2可能
满足 2 xxx xxx xxx 开头数字 = 9*8*7*5 或 9*8*6*5
因此9和8绝对会被开头用掉
满足 x xxx xxx xx2 结尾数字 = 1*2*3*7 或 1*3*4*6 或 2*3*6*7(同时用掉6,7不合)
所以
9 x y 1 9 x y 1
8 z 2 8 z 3
5 3 5 4
x 7 剩 0 4 6 x 6 剩 0 2 7
__________ ____________
(9,8,5) (1,2,3) 可替换 (9,8,5) (1,3,4) 可替换
看似有 3!*3!*3! *2 = 432 种情况,但其实更少,因为有11倍数这条件可以用
9**1 以左式为例 ,
8*2
53 若8** 11倍数,是803
7 9** .. 902
5** .. 561
xyyz*803*xz*7 x \in {9,5} && y \in {4,6} && z \in{1,2} 八种
xyyz*902*xz*7 x \in {8,5} && y \in {4,6} && z \in{1,3} 八种
xyyz*561*xz*7 x \in {9,8} && y \in {4,6} && z \in{2,3} 八种
若三位数非11被数,则四位数必须是
11|abcd -> (a-d) ± (b-c) = 0 或 11
因b,c \in {0,4,6} -> b-c \in ±{2,4,6}
总之四位数只可能是 9042, 8041,8063, 5401, 5203
9042*x6y*xy*7 四种
8041*x6y*xy*7 ..
8063*x3y*xy*7 ..
5401*x6y*xy*7 ..
5023*x4y*xy*7 ..
- - - -
9**1 剩 0 2 7
8*3
54
6
xzzy*803*xy*6 八种
xzzy*924*xy*6 ..
9724*x0y*xy*6 四种
8701*x2y*xy*6 ..
8723*x0y*xy*6 ..
5203*x7y*xy*6 ..
5027*x7y*xy*6 ..
OAO,削减到8*2+4*5+8*2+4*5 = 72 种情况了
问题是答案不在里面,所以不做了,掯。
因为首位数是 9*8*7*5 或 9*8*6*5 的假定是错的,因为这两个只是
首位数必定是2的情况。5*6*7*8 和 5*6*7*9 都差一点点适当的排列也是个2字头
结论是答案在5 6 7 9开头 <-----怎麽可能用这种方法筛出来,一定是
Program-Up
Program-Up
Program-Up
不用它的优雅方式难道没有吗
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.213.88
※ 编辑: jurian0101 来自: 140.112.213.88 (11/30 21:55)
1F:推 tml:居然真的有人用笔算...其实不在乎10!的话是一行没错... 11/30 22:54