加法、乘法、乘方以及更高级运算的统一

对于 k k k x x x相加,可以表示成 k x kx kx,由此衍生出更高级的乘法运算;对于 k k k x x x相乘,可以表示成 x k x^k xk,由此衍生出更高级的乘方运算。对于 k k k x x x的乘方,即 x x x . . . x x^{x^{x^{.^{.^{.^x}}}}} xxx...x,没有相应的表示方法。虽然我们可以给相应的定义,比如 x k x_k xk,但是这样就会又出现新的高级运算,比如 x x x . . . x x_{x_{x_{._{._{._x}}}}} xxx...x,这样下去无穷尽,显得定义没有了意义。
事实上我们可以把它变得有意义,即通过某种方法,表示任意级的运算。我们可以定义加法为0级运算,乘法为1级运算,乘方为2级运算,以此类推。观察上例运算,可以发现每个运算都带有前面的系数 k k k,因此我们得到下面定义:
定义1 A s , k A_{s,k} As,k表示 s s s级运算,运算的系数为 k k k
定义2 A ( s , k , x ) A(s,k,x) A(s,k,x)表示将 A s , k A_{s,k} As,k作用到 x x x上,即
A ( s , k , x ) A s , k ( x ) A(s,k,x)A_{s,k}(x) A(s,k,x)As,k(x)
例1 A ( 3 , 3 , x ) = x 3 = x x x A(3,3,x)=x_3=x^{x^x} A(3,3,x)=x3=xxx
接下来的问题就是如何计算了。
我们可以确定的是, A s , k A_{s,k} As,k是右结合的。那么我们就可以在计算时做一些推导。如例1,
A ( 3 , 3 , x ) = x 3 = x x x = x ( x x ) = x x 2 = x A ( 3 , 2 , x ) = A ( 2 , A ( 3 , 2 , x ) , x ) \begin{aligned} A(3,3,x) &= x_3 \\ &=x^{x^x} \\ &=x^{(x^x)} \\ &=x^{x_2} \\ &=x^{A(3,2,x)} \\ &=A(2,A(3,2,x),x) \end{aligned} A(3,3,x)=x3=xxx=x(xx)=xx2=xA(3,2,x)=A(2,A(3,2,x),x)
以此类推可得
A ( s , k , x ) = A ( s − 1 , A ( s , k − 1 , x ) , x ) A(s,k,x) = A(s-1, A(s,k-1,x),x) A(s,k,x)=A(s1,A(s,k1,x),x)
这样对于任何的运算,都可以通过此公式递推化简。为得到答案,还需要一些初始条件。
A ( 0 , k , x ) = x + k A ( s , 1 , x ) = x \begin{aligned} & A(0,k,x)=x+k \\ & A(s,1,x)=x \end{aligned} A(0,k,x)=x+kA(s,1,x)=x
接下来就可以通过计算机计算得到任意级的计算结果了。

def A(s,k,x):
    if k==1: return x
    if s==0: return x+k
    if s==1: return k*x #乘法已经有了优化,不需要在这里分解成加法
    return A(s-1,A(s,k-1,x),x)

x = 3
print("%d"%(x**(x**x)))  # output: 7625597484987
print("%d"%(A(3,3,x)))   # output: 7625597484987
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

73826669

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值