标题: | |||
标签: | |||
详情: | 新学期开始了,小哈是小哼的新同,小哼向小哈询问QQ号,小哈当然不会直接告诉小哼。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾,再将第5个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是小哈的QQ啦。现在你来帮帮小哼吧。小哈给小哼加密过的一串数是“6 3 1 7 5 8 9 2 4”。解密后小哈的QQ号应该是“6 1 5 9 4 7 2 8 3”。 | ||
输入格式: | 只有2行第1行有一个整数n (1<=n<=100000)第2行有n个整数为加密过的QQ号,每个整数之间用空格隔开。每个整数在1~9之间。 | ||
输出格式: | 只有一行,输出解密后的QQ号。 | ||
限制: | 每个测试点1秒 50%的数据1<=n<=10000 100%的数据1<=n<=100000 | ||
样例: |
|
这一题刚开始按照书上两种方法模拟个一遍队列,但是都有一组数据是过不去的,我也没找到是什么原因。
贴出来大家可以找一下原因。本题实现过程过于简单,就不用写题解了。
代码1:
#include#include using namespace std;struct que{ int date[100000]; int head; int tail;};int main(){ int n; scanf("%d",&n); struct que q; q.head=1; q.tail=1; for(int i=1;i<=n;i++) { scanf("%d",&q.date[q.tail]); q.tail++; } while(q.head
代码2:
#include#include using namespace std;int a[100001];int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); int head=1,tail=n+1; while(head
这个题最后我用STL里面的队列实现的,一次就A了。
AC代码:
#include#include using namespace std;int a[100000];int main(){ queue q; int n; scanf("%d",&n); for(int i=0;i