你有一个数字 x�,并且把 x� 放到队列里,你要执行如下操作 k� 次。
每次记队首的元素为 y�,首先把这个元素从队列中弹出,然后将 2y2� 和 2y+12�+1 依次放到队列的末尾。
对于每次操作,输出队首的元素 y�。
输入格式
第一行两个整数 x,k�,�。
输出格式
共 k� 行,每行一个数字,表示每次操作队首的元素。
样例输入1
10 5
样例输出1
10
20
21
40
41
样例输入2
10 7
样例输出2
10
20
21
40
41
42
43
数据规模
对于 100%100% 的数据,保证 1≤x≤104,1≤k≤1051≤�≤104,1≤�≤105。
#include <bits/stdc++.h>
using namespace std;
int x, k;
int q[200005];
int rear = 1, front = 1;
int main () {
scanf("%d%d", &x, &k);
q[1] = x;
for (int i = 1; i <= k; i++) {
q[++rear] = q[front] * 2;
q[++rear] = q[front] * 2 + 1;
++front;
}
for (int i = 1; i <= k; i++)
printf("%d\n", q[i]);
}