(python3)1026. 程序运行时间(15分)及1027. 打印沙漏(20分)

题目不再赘述。。。

复制一堆文字看着很乱,简要介绍便是:

1026.

输入格式:输入在一行中顺序给出2个整数C1和C2。注意两次获得的时钟打点数肯定不相同,即C1 < C2,并且取值在[0, 107]。

输出格式:在一行中输出被测函数运行的时间。运行时间必须按照“hh:mm:ss”(即2位的“时:分:秒”)格式输出;不足1秒的时间四舍五入到秒。

两次获得的时钟打点数之差(C2-C1)就是f运行所消耗的时钟打点数,再除以常数CLK_TCK=100,就得到了以秒为单位的运行时间。

解题:

c1,c2 = list(map(int,input().split()))
sec = round((c2-c1) / 100)

mint , secd = divmod(sec,60)
hour , mint = divmod(mint,60)

print("{0:0>2}:{1:0>2}:{2:0>2}".format(hour,mint,secd))

就这么几行而已,若非说要注意的,也就是round函数,和format函数吧。


1027.

输入格式:输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。

输出格式:首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:
19 *
输出样例:
*****
 ***
  *
 ***
*****
2
解题:

1.先计算层数,注意1,3,5,7...其加和是个完全平方数,这样组成沙漏的数目加1除以2是个平方数;

2.计算宽度,因为沙漏要中间对齐,而宽度是个变量,鄙人不会用{}.format() 处理,只好求宽度,以便输出时可求空格数使之对齐;

3. 输出,须知每行的符号数目及符号前空格数,最后计算剩下多少符号

num ,sy = input().split()
import math
# 先计算层数/宽度
layer = int(math.sqrt((int(num)+1)//2))
width = 2*layer-1
for l in range(layer,0,-1):
    num_sy = 2*l-1
    num_space = (width-num_sy)//2
    print(" " * num_space + sy * num_sy)

for m in range(2,layer+1):
    num_sy = 2 * m - 1
    num_space = (width - num_sy) // 2
    print(" " * num_space + sy * num_sy)

out = int(num) - layer**2*2 + 1
print(out)


你可能感兴趣的:(Python3之PAT乙级)