首页 > 试题广场 >

幂运算

[编程题]幂运算
  • 热度指数:5099 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
给定两个数R和n,输出R的n次方,其中0.0<R<99.999, 0<n<=25

输入描述:
多组测试用例,请参考例题的输入处理 输入每行一个浮点数 R 其中0.0 < R <99.999, 一个整数 n 其中0 < n <=25


输出描述:
输出R的n次方
示例1

输入

95.123 12 0.1 1

输出

548815620517731830194541.899025343415715973535967221869852721 0.1
data = list(map(str, input().split()))
data_int = [0, 0]
data_float = [0, 0]     # 没有小数位数
for i0 in range(len(data[0])):
    if data[0][i0] == '.':
        data_float[0] = len(data[0]) - 1 - i0  # 小数位数
        data_int0 = data[0].split('.')
        data_int[0] = int(data_int0[0] + data_int0[1])  # 转换为整数
        break
if data_float[0] == 0:
    data_int[0] = int(data[0])  # 转换为整数
data[0] = data_int[0]
data[1] = int(data[1])

def power_a(r, n):
    re = 1
    for i0 in range(int(n)):
        re *= r
    return re
t0 = power_a(data[0], data[1])
# print(len(str(t0)))
if (data_float[0] * data[1]) == 0:
    t01 = int(t0)
    t0 = t01
elif (data_float[0] * data[1]) >= len(str(t0)):
    t02 = '0'  # 考虑小数位太多,要在前面加0
    for i1 in range(data_float[0] * data[1] - len(str(t0))):
        t02 += '0'
    t02 += str(t0)
    t01 = '0' + '.' + t02[1:]
    t0 = float(t01)
else:
    t01 = str(t0)[:-(data_float[0] * data[1])] + '.' + str(t0)[-(data_float[0] * data[1]):]
    t0 = float(t01)
    
print(t01)  # 示例给的是一行四个数,测试缺失一行2个数,Python保留>16位小数要用其他模块
# for j0 in range(len(data[2])):
#     if data[2][j0] == '.':
#         data_float[1] = len(data[2]) - 1 - j0  # 小数位数
#         data_int0 = data[2].split('.')
#         data_int[1] = int(data_int0[0] + data_int0[1])  # 转换为整数
#         break
# if data_float[1] == 0:
#     data_int[1] = int(data[2])  # 转换为整数
# data[2] = data_int[1]
# data[3] = int(data[3])

# t1 = power_a(data[2], data[3])
# if (data_float[1] * data[3]) == 0:
#     t11 = int(t1)
#     t1 = t11
# elif (data_float[1] * data[3]) >= len(str(t1)):
#     t12 = '0'  # 考虑小数位太多,要在前面加0
#     for i1 in range(data_float[1] * data[3] - len(str(t1))):
#         t12 += '0'
#     t12 += str(t1)
#     t11 = '0' + '.' + t12[1:]
#     t1 = float(t11)
# else:
#     t11 = str(t1)[:-(data_float[1] * data[3])] + '.' + str(t1)[-(data_float[1] * data[3]):]
#     t1 = float(t11)

# print(t01, t11)
编辑于 2021-05-04 15:58:28 回复(0)