1057: 纸牌还原
时间限制: 1 Sec 内存限制: 128 MB
提交: 10 解决: 8
[提交][状态][讨论版][命题人:13087216664]
题目描述
小明和小红在玩纸牌游戏,小明突然想到一种纸牌玩法:手上有13张牌点数为1~13叠放在一起;进行以下步骤:
1. 将顶上的第一张牌放到纸牌堆的下面;
2. 将顶上的第一张牌放在桌上。
3. 反复进行1、2步直到所有的牌都在桌上。
然后让小红说出这13张牌原来在手上的初始状态的顺序是什么,你能帮助她吗?
输入
给出这13张牌在桌上的顺序
输出
输出这13张牌在手上的初始顺序
样例输入
2 4 6 8 10 12 1 5 9 13 7 3 11
样例输出
1 2 3 4 5 6 7 8 9 10 11 12 13
来源
程序功能:准备13张牌,标上序号1、2、3直到13,然后按题意处理,得到一定顺序的数字组合,最后以此数字组合顺序为下标读取数据,所得数组即是原纸牌顺序!!!
#include<stdio.h>
#define N 13
int
main()
{
int
a[N+1]={0};
int
b[N+1];
//N 张牌处理后的下标顺序
int
i=1,number=1,num=0;
while
(number!=N+1)
//number已经处理的纸牌数量
{
if
(!a[i])
{
num++;
if
(num%2==0)
//第二张牌打出
{
b[number++]=i;
a[i]=1;
//排除
}
}
i=i%13+1;
}
for
(i=1;i<N+1;i++)
scanf
(
"%d"
,&a[(b[i])]);
for
(i=1;i<N+1;i++)
printf
(
"%d "
,a[i]);
printf
(
"\n"
);
return
0;
}
/**************************************************************
Problem: 1057
User: 201703120136
Language: C
Result: 正确
Time:12 ms
Memory:1092 kb
****************************************************************/