P31: 硬币求和
英国的货币单位包括英镑£和便士p,在流通中的硬币一共有八种:
1p, 2p, 5p, 10p, 20p, 50p, £1 (100p), £2 (200p)
以下是组成£2的其中一种可行方式:
1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p
不限定使用的硬币数目,组成£2有多少种不同的方式?
这么久终于有要用到点数学的题目了.经典的生成函数应用.
m={1,2,5,10,20,50,100,200}; Coefficient[Series[1/Product[1-x^m[[i]],{i,8}],{x,0,200}],x^200]
P32: 全数字的乘积
如果一个n位数包含了1至n的所有数字恰好一次,我们称它为全数字的;例如,五位数15234就是1至5全数字的。
7254是一个特殊的乘积,因为在等式39 × 186 = 7254中,被乘数、乘数和乘积恰好是1至9全数字的。
找出所有被乘数、乘数和乘积恰好是1至9全数字的乘法等式,并求出这些等式中乘积的和。
注意:有些乘积可能从多个乘法等式中得到,但在求和的时候只计算一次。
先来个判定函数fooQ来筛选那些乘数被乘数乘积1-9全数字的.
这个式子的两个乘数也不会很大.
两位数乘以三位数等于四位数,或一位数乘以四位数等于四位数,大的叫a小的叫b,穷举一下.
fooQ=Union[IntegerDigits[#1],IntegerDigits[#2],IntegerDigits[#1 #2]]==Range[9]&; Total[Union@@Table[If[ab<=9999&&fooQ[a,b],ab,0],{a,100,9999},{b,1,99}]]
P33: 消去数字的分数
49/98是一个有趣的分数,因为缺乏经验的数学家可能在约简时错误地认为,等式49/98 = 4/8之所以成立,是因为在分数线上下同时抹除了9的缘故。
我们也会想到,存在诸如30/50 = 3/5这样的平凡解。
这类有趣的分数恰好有四个非平凡的例子,它们的分数值小于1,且分子和分母都是两位数。
将这四个分数的乘积写成最简分数,求此时分母的值。
也就是解方程
\left\{ \begin{aligned} &b = c\\ &\frac{10a + b}{10c + d} = \frac{a}{d} < 1\\ &0 < a,b,c,d \in N < 10 \end{aligned} \right.
然后转换成代码.其实...唔...我每次都要这么插一句话的原因是公式不能直接连代码高亮器,否则会被转译,要加一句废话当分隔符.
FindInstance[(10 a+b)/(10 c+d)==a/d<1&&b==c&&0<a<10&&0<b<10&&0<c<10&&0<d<10,{a,b,c,d},Integers,4] P34:各位数字的阶乘 145是个有趣的数,因为1! + 4! + 5! = 1 + 24 + 120 = 145。
找出所有各位数字的阶乘和等于其本身的数,并求它们的和。
注意:因为1! = 1和2! = 2不是和的形式,所以它们并不在讨论范围内。
和30题思路差不多吧,找上界,穷举,直接把代码搬过来改一下就能用了.
fooQ=Total[(IntegerDigits@#)!]==#&; max=First[n/.NSolve[{10^n==9!n,n>1},n]]; Total[Select[Range[10,Floor[10^max]],fooQ]] P35:圆周素数 197被称为圆周素数,因为将它逐位旋转所得到的数:197/971和719都是素数。
小于100的圆周素数有十三个:2、3、5、7、11、13、17、31、37、71、73、79和97。
小于一百万的圆周素数有多少个?
才一百万?不如穷举.....
都是一个思路,写个判定函数,Select...写了好几遍了.
fooQ:=#==NestWhile[RotateLeft,#,PrimeQ[FromDigits[#]]&,1,Length[#]]&; Length@Select[IntegerDigits[Array[Prime,PrimePi[10^6]]],fooQ] P36:双进制回文数 十进制数585 = 10010010012(二进制表示),因此它在这两种进制下都是回文数。
找出所有小于一百万,且在十进制和二进制下均回文的数,并求它们的和。
(请注意,无论在哪种进制下,回文数均不考虑前导零。)
又是判定加Select....唉...套路,都是套路
Total@Select[Range[10^6],IntegerDigits[#,2]==Reverse[IntegerDigits[#,2]]&&IntegerDigits[#]==Reverse[IntegerDigits[#]]&]
P37: 可截素数
3797有着奇特的性质。不仅它本身是一个素数,而且如果从左往右逐一截去数字,剩下的仍然都是素数:3797、797、97和7;同样地,如果从右往左逐一截去数字,剩下的也依然都是素数:3797、379、37和3。
只有11个素数,无论从左往右还是从右往左逐一截去数字,剩下的仍然都是素数,求这些数的和。
注意:2、3、5和7不被视为可截素数。
郁闷,我想了下我没法证明只有11个素数会这样...
反过来做呗,{2,3,5,7}往左加一位{13, 23, 43, 53, 73, 83, 17, 37, 47, 67, 97}就是,往右加一位{23, 29, 31, 37, 53, 59, 71, 73, 79}就是,然后在这个基础上再构造.
别问我为啥只要是n=5次,反正我加100次也是这个结果.除非我能想明白为啥只有11个这样的素数...
Intersection取交集,Total加起来,最后减去{0,2,3,5,7}这5个.
fooQ[a_,b_]:=Select[Plus@@@Tuples@{# a,b^#2 Range@9},PrimeQ]&; PrimeList[x__,n_]:=Drop[Join@@FoldList[fooQ@x,{0},0~Range~n],2]; Tr[Intersection[PrimeList[1, 10, 5], PrimeList[10, 1, 5]]]
P38: 全数字的倍数
将192分别与1、2、3相乘:
192 × 1 = 192 192 × 2 = 384 192 × 3 = 576
连接这些乘积,我们得到一个1至9全数字的数192384576。我们称192384576为192和(1,2,3)的连接乘积。
同样地,将9分别与1、2、3、4、5相乘,得到1至9全数字的数918273645,即是9和(1,2,3,4,5)的连接乘积。
对于n > 1,所有某个整数和(1,2, … ,n)的连接乘积所构成的数中,最大的1至9全数字的数是多少?
穷举.....然后又是Select判定.....
我们所要寻找的答案至少要大于题目给出的那个数918273645,所以怎么着9开头;
然后因为n大于1,这个数不可能是五位数,所以范围就出来了[9000,9999]
fooQ=Sort@(IntegerDigits[#]~Join~IntegerDigits[2 #])==Range[1,9]& list=Select[Range[9000,9999],fooQ] Row[Join@@IntegerDigits[Max@list {1,2}]]
P39: 整数边长直角三角形
若三边长{a,b,c}均为整数的直角三角形周长为p,当p = 120时,恰好存在三个不同的解:
{20,48,52}, {24,45,51}, {30,40,50} 在所有的p ≤ 1000中,p取何值时有解的数目最多?
解个方程的事儿.
$$\begin{gathered} \left{ \begin{gathered} a^2 + b^2 = c^2\ p = a + b + c\ p > c > b > a > 0\ \end{gathered} \right.\ \left{ \begin{gathered} 0 < a \leqslant \left\lfloor {p - \frac{p}{\sqrt 2 }} \right\rfloor\ b = \frac{p(2a - p)}{2(a - p)}\ \end{gathered} \right.\ \end{gathered} $$
翻成代码:
a=Floor[p(1-1/Sqrt[2])]; b[a_,p_]:=Table[(2i-p)p/(2i-2p),{i,1,a}]; Last@Ordering@Table[Total@Boole[IntegerQ/@b[a,p]],{p,1,1000}] P40:钱珀瑙恩常数 将所有正整数连接起来构造的一个十进制无理数如下所示:
0.123456789101112131415161718192021… 可以看出小数点后第12位数字是1。
如果dn表示上述无理数小数点后的第n位数字,求下式的值:
d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000 我选择直接数...
Times@@RealDigits[ChampernowneNumber[10],10,10^6][[1,10^Range[0,6]]] 连续计时10分54秒,没有压进10分钟有点遗憾.....思路倒是不难找,就是比如P38这种题真是阅读理解...
← Level21-30 Level41-50 →