网站开发产品需求说明,网站建设情况的报告,友情链接多久有效果,装修设计网站哪个最好[蓝桥杯 2020 省 B1] 整除序列
题目描述
有一个序列#xff0c;序列的第一个数是 n n n#xff0c;后面的每个数是前一个数整除 2 2 2#xff0c;请输出这个序列中值为正数的项。
输入格式
输入一行包含一个整数 n n n。
输出格式
输出一行#xff0c;包含多个整数…[蓝桥杯 2020 省 B1] 整除序列
题目描述
有一个序列序列的第一个数是 n n n后面的每个数是前一个数整除 2 2 2请输出这个序列中值为正数的项。
输入格式
输入一行包含一个整数 n n n。
输出格式
输出一行包含多个整数相邻的整数之间用一个空格分隔表示答案。
样例 #1
样例输入 #1
20样例输出 #1
20 10 5 2 1提示
对于 80 % 80\% 80% 的评测用例 1 ≤ n ≤ 1 0 9 1\le n\le10^9 1≤n≤109。
对于所有评测用例 1 ≤ n ≤ 1 0 18 1\le n\le10^{18} 1≤n≤1018。
蓝桥杯 2020 第一轮省赛 B 组 F 题。
正确答案
import math
n int(input())s [n]
while n1:n n//2s.append(n)for i in s:print(i,end )80分的答案
import math
n int(input())
s [n]
while n1:n math.floor(n/2)s.append(n)
for i in s:print(i,end )两者的区别在于对n的计算上正确答案的计算是n//2。 80的答案 是math.floor(n/2)对n/2向下取整 在效果上两者是一样的但不知为什么会有一个错误。 math.floor()在处理非常大的整数时会遇到精度问题可能会影响结果。一般的整除计算还是用//比较好。