Problem F: 电阻器的分类

Posted hangsingplus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Problem F: 电阻器的分类相关的知识,希望对你有一定的参考价值。

Problem Description

陈是电子元件实验室的一名负责老师,学校最近采购了一批电阻器,他需要做的工作就是给这些电阻器分好类,并且计算好每种电阻器的数量,并按照大小顺序给他们排好序,存放在实验室中。
已知电阻器总共有四类:
薄膜电阻器 film resistor (FILM)
绕线式电阻器 wire resistors (WIRE)
实心电阻器 solid resistor (SOLI)
敏感电阻器 sensitive resistors (SENS)
每一类电阻器对应的各种型号,比如说wire_resistors01代表通用线绕电阻器,它属于线绕式电阻器,为了简单起见,所给的元件中前四个字母代表了它对应的电阻器的类别,即前四个字母为”film”代表薄膜电阻器FILM,前四个字母为“wire”代表线绕式电阻器WIRE,前四个字母为”soli”代表实心电阻器SOLI,前四个字母为”sens”代表敏感电阻器SENS。

Input Description

每个测试样例第一行为一个正整数n(n<=50)表示有n种类型的电阻器。当n为0时,测试结束。
接下来有n行,每行有一个字符串s(长度小于15)和一个整数k(k<=20)。其中s代表电阻器的型号,n代表该型号电阻器的数量。

Output Description

每一个样例对应的输出为四行,其中每行对应一个类别的电阻器,且按照它们数量的大小从小到大输出。测试数据保证不会出现两类电阻器数量相同的情况。
每行的内容为一个字符串t和一个整数sum,其中t只可能是”FILM”,”WIRE”,”SOLI”,”SENS”中的一种。sum代表该类别电阻阻器的总数量。

Sample Input

5 
wire_resistors0a 10
solid_resistors0b 8
solid_resistors0c 7
sensitive_resistors0d 16
wire_resistors0e 10
0

Sample Output

FILM 0
SOLI 15
SENS 16
WIRE 20


ac代码:

 def func():
     while True:
         try:
             FILM = [\'film\',0]
             WIRE = [\'wire\',0]
             SOLI = [\'soli\',0]
             SENS = [\'sens\',0]
             n = int(input())
             # 输入为0是不必输出各个分类情况都为0的语句
             if n==0:
                 continue
             for i in range(n):
                 x = []
                 x = input().split()
                 if FILM[0] in x[0]:
                     FILM[1] += int(x[1])
                 elif WIRE[0] in x[0]:
                     WIRE[1] += int(x[1])
                 elif SOLI[0] in x[0]:
                     SOLI[1] += int(x[1])
                 elif SENS[0] in x[0]:
                     SENS[1] += int(x[1])
             ans = [FILM,WIRE,SOLI,SENS]
             ans.sort(key = takesecond)#取列表的第二个元素
             for i in ans:
                # upper()将字符串中所有小写字母转换为大写
                 y = i[0].upper()
                 print(f"y i[1]")
         except EOFError:
             break
 def takesecond(elem):
     return elem[1]
 if __name__ == \'__main__\':
     func()

 

 

电阻立方体网络

  时不常会看到这样的电阻网络问题, 虽然没有实际应用,但令人琢磨起来还是蛮有意思的。 下面是12个10k欧姆的电阻焊接成电阻立方体网络。 问题是求A-H 之间的电阻。

▲ 图1 电阻立方体网络

  当所有的电阻都相同的时候, 如果在A,H 两端施加电压, 那么D,E,C,F 这四个点都应该是A,H之间的中间电位, 所以连接在C,D 以及E,F 之间的电阻可以是省略。 电路则可以简化成下面右边的形式。

▲ 图2 电阻网络等效电路

  不难分析, 最终A-H 之间的电阻应该是单个电阻的四分之三。 如果单个电阻为10kΩ,那么A-H 之间的电阻为应该是7.5kΩ。

  实际上,这个电阻网络总共有八个顶点, 任意两者之间都存在阻抗。 如果询问那两点的阻抗最大, 估计大多数人都会承认,应该是立方体的对角线,比如A-G , 之间的电阻最大。 那么A-G 之间的电阻有多大呢?

  Don Cross 在他的博客 Cubical Resistor Network 对于这个问题进行了讨论。他假设在立方体对角线施加1V 激励电压, 通过分析格点之间的对称性和等效电阻, 最终他得到立方体对角线的电阻等于单个电阻的六分之五。

▲ 图3 电阻网络立方体等效电路

  有趣的是,他还使用了实际电阻进行了测试, 并且测量出网络中所有节点之间的电阻。

▲ 图4 实际电阻网络

  经过测量, 可以看到整个网络各节点之间的电阻总共分为三类:

  • 对角线: 电阻大约为 5/6 R;
  • 同面对角线:电阻大约为 3/4 R;
  • 相邻: 电阻大约 3/5 R

▲ 图5 电阻网络各点之间的实测电阻

  估计上述电阻网络等效电阻计算还是可以心算出来的, 在 Infinite 2D square grid of 1 Ω 1\\Omega 1Ω resistors 中给出了一个询问无穷范围中的二维电阻网络中,两个对角线之间的电阻问题。

▲ 图6 无穷范围中的二维电阻网络

  求解的方法中居然还是用到傅里叶变换 的公式, 这一点的确让我破防了。 上述无穷二维电阻网络中,对角线节点之间的电阻居然是 2 / π    Ω 2/\\pi \\,\\,\\Omega 2/πΩ

▲ 图7 奇异的电路图


■ 相关文献链接:

● 相关图表链接:

以上是关于Problem F: 电阻器的分类的主要内容,如果未能解决你的问题,请参考以下文章

HDU 5105Math Problem

使用 OpenCV 阈值电阻带

EIT的技术分类

电阻立方体网络

C8051逆向电阻屏:头儿拍脑袋说电阻屏IC好赚钱3块钱成本能卖20几块。,一个月不分昼夜逆向成功后头儿说电阻屏已经被市场淘汰请放弃治疗。

清华集训2015 V