题目描述
有一个序列,序列的第一个数是 n,后面的每个数是前一个数整除 2,请输出这个序列中值为正数的项。
输入格式
输入一行包含一个整数 n。
输出格式
输出一行,包含多个整数,相邻的整数之间用一个空格分隔,表示答案。
输入输出样例
输入 #1复制
20
输出 #1复制
20 10 5 2 1
说明/提示
对于 80% 的评测用例,1≤n≤109。
对于所有评测用例,1≤n≤1018。
蓝桥杯 2020 第一轮省赛 B 组 F 题。
解题思路
比较简单就不多说了,注意n的取值最高是10^18,这个数字刚好是long long 能存储的范围,所以用这个
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long n; //开long long
cin >> n;
while(n)
{
cout << n << " "; //先输出再除
n /= 2;
}
return 0;
}
AC如下: