定义新运算 n k* m

Python中, 可以使用n * m表示乘法, n ** m表示乘方。

然后风子想到了n *** m、n **** m、n ***** m可以表示什么, 于是我定义n k* m表示n k个* m运算, 比如 2 3* 4表示2***4。

规定n,k,m属于正整数, 因为我的脑子很不好使, 很怕产生各种乱七八糟的情况。风子说: “说不定数学原来是连续的, 然后被人类给离散化了。”

然后规定 n k* m = n (k-1)* n (k-1)* n … (k-1)* n (m个n), 计算顺序从右到左。

至于为什么是从右到左, 因为Python运行2**3**4的结果(很大)告诉是从右到左, awk ‘{print 2^3^4; }’, $((2**3**4))(溢出为0, 所以是右到左), ruby p 2**3**4都是右到左, 但是VBScript运行msgbox 2^3^4是从左到右(结果4096), 然后数学老师教我们乘法也是从左到右计算的。

根据这个规定, 我们得到了一个重要的结论1 k* 1=1, 2 k* 2=2 (k-1)* 2=2*2=4, 这个结论方便我们化简如下算式

2****3

=2***2***2

=2***4

=2**2**2**2

=2**2**4

=2**16

=65536

可以撰写如下代码来计算

# -*- coding: utf-8 -*-
# 定义如下运算 n k* m = n (k-1)* n (k-1)* n ... (k-1)* n (m个n,计算顺序从右到左)

def main():
    n, m, k = raw_input().split(' ')
    ans = calc(int(n), int(m), int(k))
    print(ans)
    raw_input()

#计算 n k* m
def calc(n, m, k):
    if k == 1:
        return n * m
    c = m - 1
    ans = n
    while c>0:
        ans = calc(n, ans, k - 1)
        c -= 1
    return ans

if __name__ == '__main__':
    main()

输入n,m,k来使用。

这不是别的, 正是超级幂。

忽然想到逆运算。

若n k* m=x,

就用n k/ x表示m吧, 为什么是”/”, 我高兴。

然后n k* (n k/ x)=x。

把它叫做”超级对数”吧~

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/5433QrCode