[蓝桥杯 2020 省 B1] 整除序列 题解
题目大意
有一个序列,序列的第一个数是 \(n\),后面的每个数是前一个数整除 \(2\),请输出这个序列中值为正数的项。
解题思路
序列的第一个数为 \(n\),所以可以先直接输出 \(n\)。
因为序列到 \(1\) 就不能再除了,所以要在 \(n\) 不等于 \(1\) 的情况下不断除以 \(2\),并输出 \(n\)。
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n;
int main() {
cin>>n;
cout<<n<<" ";
while(n!=1){
n/=2;
cout<<n<<" ";
}
return 0;
}