飞盘高手(水题)
|
Description
杰克是美国某小镇有名的飞盘高手。他掷飞盘的时候有一个习惯,在一叠飞盘中,从第一个飞盘(即位于顶端的飞盘)开始,从上往下依次编号为1~N。当至少还有两个飞盘的时候,杰克通常会掷出一个飞盘,然后把新的第一个飞盘放到所有飞盘的最后。输入N,输出每次扔掉的飞盘,以及最后剩下的飞盘。 Input
第一行为一个整数t(0<t<20),表示测试用例个数。以下t行每行包含一个整数n(0<n<40),为一个测试用例的飞碟数。 Output
为每个测试用例单独输出一行,该行中依次输出每次掷出的飞盘编号以及最后剩下飞盘,每个飞盘后跟着一个空格。 Sample Input
2 7 4 Sample Output
1 3 5 7 4 2 6 1 3 2 4 |
View Code
#include <stdio.h> #include <iostream> #include <queue> using namespace std; int main() { int t, n; scanf("%d", &t); while (t--) { queue<int>q; scanf("%d", &n); for (int i = 1; i <= n; i++) q.push(i); while (q.size() > 1){ printf("%d ", q.front()); q.pop(); q.push(q.front()); q.pop(); } printf("%d \n", q.front()); } return 0; }


浙公网安备 33010602011771号