题目背景
faebdc和zky在玩一个小游戏
题目描述
zky有n个扑克牌,编号从1到n,zky把它排成一个序列,每次把最上方的扑克牌放在牌堆底,然后把下一张扑克牌拿出来输出,最终输出的序列恰好是从1到n,faebdc问你原序列是什么,因为faebdc神犇早已在O(1)的时间得出结果,如果你在1s内答不出来,faebdc会吃了你。
输入输出格式
输入格式:
一个数n,表示扑克数目(n<=1000000)
输出格式:
n个数,表示扑克序列
输入输出样例
说明
各个测试点1s
思路:模拟。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,s,tot; int num[1000010]; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ if(s==1&&!num[i]){ s=0;num[i]=++tot; if(tot==n) break; } if(!num[i]) s++; if(i==n) i=0; } for(int i=1;i<=n;i++) cout<<num[i]<<" "; }