解题思路:我们需要在草稿纸上模拟c语言的输入变量的定义,这样可以帮助你更好的理解 后面的输出注意一下单位的换算
一定要在草稿纸上,按照这个代码,模拟一下输入输出,能让你更好地理解
参考代码:


t = int(input())

ans = 0

for i in range(t):

  s = input()

  a = s.split()

  if a[0]=='int':

    b = a[1].split(',') #相似的,这个是将已经被切分(以空格为切分符)的输入字符,从数组下标为1处,取出变量名,由题目可知(去看看题目的描述)

    ans += len(b)*4 #变量名有几个,就乘多少个 4  (这里的4,指的是4个字节)

  elif a[0]=='long':

    b = a[1].split(',') #与上面的int类似操作

    ans += len(b)*8

  elif a[0] == 'String':

    b = a[1].split(',')

    for x in b:

      ans += len(x) - x.find('=') - 3

#len(x)是为获取总长度,为了放回字符串的长度,x.find('=')返回=的下标为1

#然后名字和=的长度共占4,所以减去‘=’下标长再减去3剩下的就是字符串的长

    ans-=1  #减去后面的分号

  elif a[0]=='long[]':

    s=s.lstrip('long[]') #去除前面的"long[]"后为形成新的字符串

    b=s.split(',')#将函数的类型与变量定义分离,然后形成list装住

    for j in b:

      st = j.find('[')+1 #例如这是分离后的-- int a[20] -->找到'['的下标 再加1就是 第一个数字的位置

      end = j.find(']') #找到结束位置,[:] 的划分是取左不取右

      x = int(j[st:end])

      ans+=x*8

  elif a[0]=='int[]':

    s=s.lstrip('int[]')

    b=s.split(',')

    for j in b:

      st = j.find('[')+1 #与上面类似

      end = j.find(']')

      x = int(j[st:end])

      ans+=x*4

G = ans//(1024**3)

M = ans%(1024**3)//(1024**2)

K = ans%(1024**2)//1024

B = ans%1024

if G!=0:

  print(f'{G}GB',end='')

if M!=0:

  print(f'{M}MB',end='')

if K!=0:

  print(f'{K}KB',end='')

if B!=0:

  print(f'{B}B',end='')


#lstrip(),用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

#find:Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。

点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论