大鹏

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

 

 

1 m =list(map(str,input().split()))
2 print(m)
3 str1 = m[-1].rstrip()
4 print(len(str1))
5 
6 print(len(list(map(str,input().split()))[-1].rstrip()))
View Code

 

 1 while True:
 2     try:
 3         in_str = input()
 4         if len(in_str) > 5000 or len(in_str) == 0:
 5             raise Exception
 6         last = in_str.strip().split(" ")[-1]
 7         leng = len(last)
 8         print(leng)
 9         break
10     except Exception:
11         print("字符串非空且长度小于5000,请再次输入:")
View Code

2

 

 1 # 计算字符串最后一个单词的长度,单词以空格隔开。
 2 while True:
 3     try:
 4         a = input()  # 输入一个字符串
 5         b = input()  # 输入一个字母
 6         count = 0
 7         for i in range(len(a)):
 8             if a[i].lower() == b.lower():
 9                 count += 1
10         print(count)
11     except:
12         break
View Code

 

3\

 

 

 1 # 先添加0再切片
 2 while True:
 3     try:
 4         str1 = input()
 5         if str == "":
 6             continue
 7         if 0 < len(str1) <= 8:
 8             m = 8 - len(str1)
 9             s = str1 + m * str(0)
10             print(s)
11         elif len(str1) % 8 == 0:
12             for i in range(len(str1) // 8):
13                 print(str1[i * 8:i * 8 + 8])
14         else:
15             m = str1 + (8 - (len(str1)) % 8) * str(0)
16             for i in range(len(str1) // 8 + 1):
17                 print(m[i * 8:i * 8 + 8])
18     except:
19         break
View Code

 

 4\

 

 用自带的函数

1 while True:
2     try:
3         str1 =input()
4         print(int(str1,16))
5     except:
6         break

 二进制转换

 1 def funx(n):
 2     result =''
 3     if n:
 4         result =funx(n//2)
 5         return result+str(n%2)
 6     else:
 7         return result
 8 
 9 while True:
10     try:
11 
12         n = int(input())
13         print(bin(n))
14         print(funx(n))
15     except:
16         break
View Code

 

Python内置进制转换函数(实现16进制和ASCII转换)
Python进制转换(二进制、十进制和十六进制)
Python内置函数进制转换的用法
 

5

 

 

 

 1 while True:
 2     try:
 3         import math
 4         num = int(input())
 5         s = ''
 6         prime = 2
 7         while prime < math.sqrt(num) + 1:
 8             if num % prime != 0:
 9                 prime += 1
10             else:
11                 num = num // prime
12                 s += str(prime) + ' '
13                 prime = 2
14         if num >= 2:
15             s += str(num) + ' '
16         print(s)
17     except:
18         break
View Code

 

大多数同学只关注到了一开始的时候使用平方根降低复杂度,然而忽略了后续进一步的优化,假如测试用例加上2的1000次方会如何?
使用while循环会比使用for循环时间复杂度要低,for循环的条件在循环中是不可变化的,而while循环每一次都可以重新调整条件缩小范围(如果条件有变化),从而这个时间复杂度差不多是12log⁡n\frac{ 1 }{ 2 }\log{n}21logn,而高赞题解所使用的for循环时间复杂度是n\sqrt{ n }n
本地测试中,测试数字为2的60次方时,while循环用时0秒,高赞for循环用时107.0277秒

 

posted on 2022-03-27 22:13  pf42280  阅读(146)  评论(0编辑  收藏  举报