计算
~~不定时更新🎃,上次更新:2023/02/23
🗡常用函数(方法)
1. 求一个整数的最末位
举个栗子🌰
n = int(input())
end = n % 10
蓝桥例题1 - 相乘✖️
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以 1000000007 的余数,会得到不同的数。 小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后 再除以 1000000007 后的余数为 999999999。如果存在,请在答案中提交这个数; 如果不存在,请在答案中提交 0。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
思路
- 遍历 1 至 1000000007
- 依题意,判定是否满足 遍历量 i * 2021 % 1000000007 == 999999999
- 这题的意思应该最多只有一个数,所以找到退出即可。还是那句话,Python无惧大数据💥
- 填空题直接填答案就行,避免超时
代码
for i in range(1,1000000008):
if i * 2021 % 1000000007 == 999999999:
print(i) # 17812964
break
蓝桥例题2 - 三角回文数🔺
问题描述
对于正整数 n, 如果存在正整数 k 使得 n=1+2+3+⋯+k=k(k+1)/2, 则 n 称为三角数。例如, 66066 是一个三角数, 因为 66066=1+2+3+⋯+363 。
如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位上的数字是一样的, 则称这个数为回文数。例如, 66066 是一个回文数, 8778 也是一个回文数。
如果一个整数 n 既是三角数又是回文数, 我们称它为三角回文数。例如 66066 是三角回文数。
请问, 第一个大于 20220514 的三角回文数是多少?
答案提交
这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
思路
- 确认遍历量,我们应该枚举 k,去找三角回文数,而不是从 20220514 开始确认枚举,确认是否满足 n = k(k+1) / 2。
- 所以我们应该先确认 k 的范围(实际上不确认也没关系),令 k(k+1)/2 = 20220514 ,即 k(k+1) = 40441028,k*k < k(k+1) = 40441028, 所以 k * k < 40441028,开方得到 k’ ≈ 6359,所以我们取 k = 6358,且满足 k(k+1) < 40441028
- 我们从k = 6358 开始遍历,用 k(k+1)/2 求得 n。再判定 n 是否是回文数即可。
代码
def huiwen(s): # 判定 s 是否是回文数
i = 0
j = len(s)-1
while i <= j:
if s[i] != s[j]:
return False
i += 1
j -= 1
return True
k = 6358
while 1:
n = k * (k+1) // 2
n = str(n)
if huiwen(n):
print(n) # 35133153
break
k += 1
如有错误,敬请指正,欢迎交流🤝,谢谢♪(・ω・)ノ