1024 科学计数法 (20分)
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。
现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。
输入格式:
每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。
输出格式:
对每个测试用例,在一行中按普通数字表示法输出 A,并保证所有有效位都被保留,包括末尾的 0。
输入样例1:
+1.23400E-03
输出样例1:
0.00123400
输入样例2:
-1.2E+10
输出样例2:
-12000000000
解题思路:
这道题尽量不要使用数学运算,因为在运算之后的小数点之后位数保留,以及科学计数法处理问题较为复杂,而且容易出错。题中标明整数部分只有一位,所以可以确定小数点位置。
完整代码:
【python解题时间_PTA(Python解答1024 科学计数法/1026 程序运行时间)】n = input().split('E')
a = n[0][0]
b = n[0][1] + n[0][3:]
c = n[1]
if int(c) < 0:
m = int(c) + 1
if m <= 0:
b = '0' + '.' + '0'*(-m) + b
else:
b = b[0:m] + '.' + b[m:]
else:
m = int(c) + 1
if m >= len(b):
b = b + '0'*(m - len(b))
else:
b = b[0:m] + '.' + b[m:]
if a == '-':
b = '-' + b
print(b)
1026 程序运行时间 (15分)
要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick,即“时钟打点”。同时还有一个常数 CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数 f 的运行时间,我们只要在调用 f 之前先调用 clock(),获得一个时钟打点数 C1;在 f 执行完成后再调用 clock(),获得另一个时钟打点数 C2;两次获得的时钟打点数之差 (C2-C1) 就是 f 运行所消耗的时钟打点数,再除以常数 CLK_TCK,就得到了以秒为单位的运行时间。
这里不妨简单假设常数 CLK_TCK 为 100。现给定被测函数前后两次获得的时钟打点数,请你给出被测函数运行的时间。
输入格式:
输入在一行中顺序给出 2 个整数 C1 和 C2。注意两次获得的时钟打点数肯定不相同,即 C1 < C2,并且取值在 [0,10^?7]。
[title]输出格式:[/title]在一行中输出被测函数运行的时间。运行时间必须按照 hh:mm:ss(即2位的 时:分:秒)格式输出;不足 1 秒的时间四舍五入到秒。
输入样例:
123 4577973
输出样例:
12:42:59
解题思路:
这道题切片来分别计算时、分、秒即可,需要注意的是,题目要求它们都是两位,遇到数字是个位时,运用'{:0>2}'.format(x)就能补全前面的0了。
完整代码:
a,b = [int(i) for i in input().split()]
c = round((b - a)/100)
s = c%60
m = c//60%60
h = c//3600
print('{:0>2}:{:0>2}:{:0>2}'.format(str(h),str(m),str(s)))