Python练习-承压计算

作者:是Dream呀? 时间:2022-04-19 15:52:21 

一、题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
X 星球的高科技实验室中整齐地堆放着某批珍贵金属原料。
每块金属原料的外形、尺寸完全一致,但重量不同。 金属材料被严格地堆放成金字塔形。

                             7 
                            5 8 
                           7 8 8 
                          9 2 7 2 
                         8 1 4 9 1 
                        8 1 8 8 4 1 
                       7 9 6 1 4 5 4 
                      5 6 5 5 6 9 5 6 
                     5 5 4 7 9 3 5 5 1 
                    7 5 7 9 7 4 7 3 3 1 
                   4 6 4 5 5 8 8 3 2 4 3 
                  1 1 3 3 1 6 6 5 5 4 4 2 
                 9 9 9 2 1 9 1 9 2 9 5 7 9 
                4 3 3 7 7 9 3 6 1 3 8 8 3 7 
               3 6 8 1 5 3 9 5 8 3 8 1 8 3 3 
              8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9 
             8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4 
            2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9 
           7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6 
          9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3 
         5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9 
        6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4 
       2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4 
      7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6 
     1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3 
    2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8 
   7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9 
  7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6 
 5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1 
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X 

其中的数字代表金属块的重量(计量单位较大)。 最下一层的 XX 代表 3030 台极高精度的电子秤。
假设每块原料的重量都十分精确地平均落在下方的两个金属块上, 最后,所有的金属块的重量都严格精确地平分落在最底层的电子秤上。
电子秤的计量单位很小,所以显示的数字很大。
工作人员发现,其中读数最小的电子秤的示数为:20864582312086458231
请你推算出:读数最大的电子秤的示数为多少?

运行限制:

  • 最大运行时间:1s

  • 最大运行内存: 128M

二、解题思路

  • 将金字塔以字符串形式放入源码中

  • 创建一个双重列表,将所有的元素按列存储在不同的列表中,然后所有的列表再分别作为一个元素存储在一个大的列表中。list =[[int(i) for i in j.split()] for j in a.split('\n')]

  • 分别遍历每一个小列表中的每一个元素,将其下一列的元素的总重量依次算出:

list[i+1][j] += list[i][j]/2
list[i+1][j+1] += list[i][j]/2

遍历结束后此时最后一行的元素便是各个的总重量,用min()max()函数求出其值的大小。

num1 = min(list[-1]) num2 = max(list[-1])

最后转化输出得出结果(2086458231/num1)*num2,但是有除法在的结果肯定是会含有小数的,此时可以通过int来强制变为整数,这样比较简单。也可以采用格式字符串的方法进行输出,但是前提是需要将结果变为float浮点数类型

三、源码分享

# @File    : 承压计算.py
a='''                        7 
                            5 8 
                           7 8 8 
                          9 2 7 2 
                         8 1 4 9 1 
                        8 1 8 8 4 1 
                       7 9 6 1 4 5 4 
                      5 6 5 5 6 9 5 6 
                     5 5 4 7 9 3 5 5 1 
                    7 5 7 9 7 4 7 3 3 1 
                   4 6 4 5 5 8 8 3 2 4 3 
                  1 1 3 3 1 6 6 5 5 4 4 2 
                 9 9 9 2 1 9 1 9 2 9 5 7 9 
                4 3 3 7 7 9 3 6 1 3 8 8 3 7 
               3 6 8 1 5 3 9 5 8 3 8 1 8 3 3 
              8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9 
             8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4 
            2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9 
           7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6 
          9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3 
         5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9 
        6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4 
       2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4 
      7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6 
     1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3 
    2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8 
   7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9 
  7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6 
 5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 '''
list =[[int(i) for i in j.split()] for j in a.split('\n')]
for i in range(len(list[-1])-1):
    for j in range(len(list[i])):
        list[i+1][j] += list[i][j]/2
        list[i+1][j+1] += list[i][j]/2
num1 = min(list[-1])
num2 = max(list[-1])
# print('%.0f'%float((2086458231/num1)*num2))
print(int((2086458231/num1)*num2))

四、学习总结

  • 1. 创建双列表的方法:list =[[int(i) for i in j.split()] for j in a.split('\n')]

  • 2.格式化字符串方法:'%.0f'%float((2086458231/num1)*num2),要先转化为浮点数类型。

来源:https://blog.csdn.net/weixin_51390582/article/details/122626853

标签:Python,练习,承压计算
0
投稿

猜你喜欢

  • 基于Django OneToOneField和ForeignKey的区别详解

    2021-10-17 11:01:21
  • 关于SQL Server数据库中转储设备分析

    2009-01-21 14:55:00
  • 阿里云ECS服务器部署django的方法

    2023-04-09 10:00:26
  • python中封装token问题

    2022-09-29 01:09:32
  • asp中去除html中style,javascript,css代码

    2011-02-16 11:18:00
  • WEB2.0时代活动类网页我们该如何设计?

    2009-12-16 12:19:00
  • PHP simplexml_import_dom()函数讲解

    2023-06-09 19:18:30
  • 如何使用Python自动控制windows桌面

    2022-05-07 08:51:14
  • python 离散点图画法的实现

    2021-04-14 17:00:31
  • Python中socket网络通信是干嘛的

    2023-12-16 02:57:03
  • pytorch教程网络和损失函数的可视化代码示例

    2023-11-26 16:13:51
  • Python Pandas读取Excel日期数据的异常处理方法

    2021-12-10 11:22:55
  • Python实现的ftp服务器功能详解【附源码下载】

    2021-12-23 08:30:55
  • Python lambda 匿名函数优点和局限性深度总结

    2023-07-25 19:22:00
  • PHP使用redis实现分布式锁的示例详解

    2023-06-01 16:32:19
  • Oracle 异构服务实践

    2007-08-17 10:00:00
  • (100-1)% 的内容是导航

    2008-01-11 19:23:00
  • Django利用AJAX技术实现博文实时搜索

    2023-01-02 01:57:50
  • 在任意字符集下正常显示网页的方法二(续)

    2023-11-22 17:36:14
  • python实现录屏功能(亲测好用)

    2022-01-12 19:54:34
  • asp之家 网络编程 m.aspxhome.com