巨人网络2018校招在线笔试-编程题三

题目

描述

数列 1...n 当数列中的个数大于 1 时进行以下操作
删除以一个元素,把新第一个元素放到末尾

输入

一个数 n

输出

最后剩余的 一个数

Example

Input

3

Output

2

题解

思路

  • 队列
1
2
3
4
5
6
7
8
9
10
11
12
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
queue<int> q;
for(int i=1;i<=n;++i)
q.push(i);
while(q.size()>1)
q.pop(),q.push(q.front()),q.pop();
cout<<q.front();
}