算法刷题记录
暑期算法刷题记录
希望能够有所改变!
1、数位递增的数
# 解法一
n = int(input())
ans = 0
for i in range(1, n):
x = str(i)
for j in range(len(x)-1):
if x[j] > x[j+1]:
break
else:
ans += 1
print(ans)
# 解法二
import sys
num = 0
n = int(input())
for i in range(1, n+1):
c = i
b = sys.maxsize # 获取最大整数值sys.maxsize
while c > 0:
a = c % 10
if a > b:
break
b = a
c //= 10 # 使用整数除法
if c == 0:
num += 1
print(num)
2、凯撒加密
c = input() # 直接读取输入
new_c = ""
for char in c:
# 计算下一个字符的ASCII值,并确保在有效的ASCII字符范围内
new_char = chr((ord(char)-97+3)%26+97)
new_c += new_char
print(new_c)
3、最大距离
import os
import sys
n = int(input())
s = list(map(int,input().split()))
max_num = 0
for i in range(n-1):
for j in range(i+1,n):
max_num = max(max_num,abs(j-i) + abs(s[j]-s[i]))
print(max_num)
4、反倍数
import os
import sys
n = int(input())
s = list(map(int,input().split()))
ans = 0
for i in range(1,n+1):
if i%s[0]!=0 and i%s[1]!=0 and i%s[2]!=0:
ans += 1
print(ans)
5、洁净数
# 不太聪明的版本,这里会运行超时
import os
import sys
n= int(input())
ans=0
for i in range(1,n+1):
i_str = str(i)
while len(i_str)>0:
if len(i_str) == 1 and int(i_str) != 2:
ans += 1
a=int(i_str[-1]) # 取个位数
if a == 2:
break
else:
i_str = i_str[:-1] # 去掉最后一位数
print(ans)
# 参考别人的版本,使用到了判断字符或字符串是否在目标中
import os
import sys
n=int(input())
count=1
for i in range(1,n):
if "2" in str(i):
continue
else:
count=count+1
print(count)