算法刷题记录

算法刷题记录

暑期算法刷题记录

希望能够有所改变!

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)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值