蓝桥杯真题训练
1-第几个幸运数字
到 X 星球旅行的游客都被发给一个整数,作为游客编号。
X 星的国王有个怪癖,他只喜欢数字 3,53,5 和 77。
国王规定,游客的编号如果只含有因子:3,5,73,5,7,就可以获得一份奖品。
我们来看前 1010 个幸运数字是:
3 5 7 9 15 21 25 27 35 453579152125273545
因而第 1111 个幸运数字是: 4949
小明领到了一个幸运数字 5908470958750559084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。
请你帮小明计算一下,5908470958750559084709587505 是第几个幸运数字。
count = 0
for i in range(30):
for j in range(30):
for k in range(30):
if 3**i * 5**j * 7**k <= 59084709587505:
count += 1
else:
break
print(count-1)
解题思路:把题目看懂,暴力找就可。
2-约数个数
1200000 有多少个约数(只计算正约数)。
count = 0
for i in range(1,int(1200000/2)+1):
if 1200000 % i ==0:
count = count +1
print(count+1)
解题思路:这太简单了,看代码。
3-砝码称重
你有一架天平和 N 个砝码,这 N 个砝码重量依次是 W_1, W_2, · · · ,
请你计算一共可以称出多少种不同的重量? 注意砝码可以放在天平两边
n = int(input())
a = list(map(int,input().split(" ")))
sum = 0
for i in range(n):
sum = sum + a[i]
dp = [[0 for i in range(sum+1)] for i in range(n+1)]
dp[0][0] = 1
for i in range(1,len(a)+1):
for j in range(sum + 1):
if dp[i-1][j] == 1:
dp[i][j] = 1
dp[i][j + a[i-1]] = 1
dp[i][abs(j-a[i-1])] =1
count = 0
for i in range(sum + 1):
if dp[n][i]==1:
count =count +1
print(count-1)
解题思路:参考文章:https://blog.csdn.net/asbbv/article/details/117253522?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164699562816780271959634%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164699562816780271959634&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-2-117253522.pc_search_result_cache&utm_term=%E8%93%9D%E6%A1%A5%E6%9D%AF%E7%A0%9D%E7%A0%81%E7%A7%B0%E9%87%8D&spm=1018.2226.3001.4187,我用python改编它的c++代码 但是却说我超时了,很疑惑。