大鹏

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  64 随笔 :: 275 文章 :: 263 评论 :: 87万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

 

 

 

复制代码
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   pf42280  阅读(149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示