输入n在[1X n]中x n]上除以3余2X 输入一个正整数n X 输入一个正整数n X 输出[1× n]上除以3余2×除以五余一的所有整数和
时间: 2023-11-21 14:04:14 浏览: 65
算法1:
1. 遍历[1, n]中的所有整数
2. 对于每个整数,判断是否除以3余2且除以5余1
3. 如果是,则累加到结果中
4. 返回结果
时间复杂度:O(n)
算法2:
1. 找到[1, n]中除以3余2且除以5余1的第一个整数x
2. 找到[1, n]中除以3余2且除以5余1的最后一个整数y
3. 计算[x, y]中除以3余2且除以5余1的所有整数的和
4. 返回结果
时间复杂度:O(1)
具体实现见代码:
# 算法1
def sum_of_num(n):
res = 0
for i in range(1, n+1):
if i % 3 == 2 and i % 5 == 1:
res += i
return res
# 算法2
def sum_of_num(n):
# 找到第一个符合条件的整数
x = 2
while x % 3 != 2 or x % 5 != 1:
x += 1
# 找到最后一个符合条件的整数
y = n - (n % 15) + 7
while y % 3 != 2 or y % 5 != 1:
y -= 1
# 计算[x, y]中符合条件的整数的和
res = 0
for i in range(x, y+1):
if i % 3 == 2 and i % 5 == 1:
res += i
return res
n = int(input())
print(sum_of_num(n))
阅读全文