题目:
问题描述
有一个序列,序列的第一个数是 n,后面的每个数是前一个数整除 2,请输出这个序列中值为正数的项。
输入格式
输入一行包含一个整数 n。
输出格式
输出一行,包含多个整数,相邻的整数之间用一个空格分隔,表示答案。
样例输入
20
样例输出
20 10 5 2 1
数据范围
对于 80% 的评测用例,1 ≤ n ≤ 109
对于所有评测用例,1 ≤ n ≤ 1018
思路:
直接从n往后除
除到1停止除法
每次除的时候输出价格
代码详解:
#include<stdio.h>
#include<iostream>
using namespace std;
typedef long long ll;
#include<algorithm>
#include<cmath>
int main()
{
ll n;
cin>>n;
while(n)
{
printf("%lld ",n);
n/=2;
}
return 0;
}
PS:送分题,一定要拿下