迭代幂次的运算,python计算幂函数

  迭代幂次的运算,python计算幂函数

  问题描述

  任何正整数都可以用2的幂来表示。例如:

  137=27 23 20

  同时约定的顺序用括号表示,即ab可以表示为a(b)。

  因此,137可以表示为:

  2(7) 2(3) 2(0)

  进一步:7=22 20 (21用2表示)

  3=2 20

  所以最后的137可以表示为:

  2(2(2) 2 2(0)) 2(2 2(0)) 2(0)

  另一个例子是:

  1315=210 28 25 2 1

  所以1315最后可以表示为:

  2(2(2 2(0)) 2) 2(2(2 2(0))) 2(2(2) 2(0)) 2 2(0)输入格式

  输入一个正整数N(N=20000),这是要分解的整数。输出格式

  程序的输出包含一行字符串,它是符合约定的N的0,2表示(表示中不能有空格)。

  分析:

  在算法的训练中,2的幂表示和幂分解是一样的,所以我们采用了递归的思想。

  递归退出,比如137,它的二进制表示是10001001,第一次变成27 ^ 23 ^ 20,然后对7进行运算,就是111,也就是22 ^ 21 ^ 20。这时候7的操作就完成了。所以我们的递归退出一定是当i=0是这个数的二进制表示的最后一位。

  另外,还要注意加号的处理。只要后面不是全零,就应该加上加号。

  code:while true:try:n=int(input())def rec(n):s=list(茉莉(n)of Kuoda)[2:][:-1]for I in range(len(s)-1,-1):if s[I]= 1 :if I==0:print( 2(0),end=) return elif i==1: print(2 ,end=) if s[0]!=0: print(,end=) elif i==2: print(2(2),end=) if s[:2]!=[0 , 0]: print(,end=) else: print(2(,end=) rec(i) print(),end=) if s[:i]!=[0 for _ inrange (I)]: print( ,end= )else:continue rec(n)except:break programming白色记录增长

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: