您的位置:首页 > 其它

Throwing cards away I UVA - 10935

2018-02-09 17:45 411 查看
题目链接:Throwing cards away I UVA - 10935

题目:桌上有n(n<=50)n(n<=50)张牌,从第一张开始(即位于顶面的牌)开始,从上往下一次编号为1~nn。当至少剩下两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张牌放到整叠牌的最后。输入一行包含一个nn,输出每次扔掉的牌以及最后剩下的牌。

#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<iomanip>
#include<set>
#include<sstream>
#define ll long long

using namespace std;

int k;

int cp(int n) {
queue<int> pp;
int vis[100], c = 0;
for(int i = 1; i <= n; i++) pp.push(i);
while(!pp.empty()) {
vis[c++] = pp.front();
pp.pop();
if(!pp.empty())
{
int cs;
cs = pp.front();
pp.pop();
pp.push(cs);
}
}
if(n>1)
printf(" %d",vis[0]);
for(int i = 1; i < n - 1; i++)
printf(", %d",vis[i]);
cout << endl;
return vis[n-1];
}

int main()
{
while(1) {
scanf("%d",&k);
if(k == 0) break;
printf("Discarded cards:");
printf("Remaining card: %d\n",cp(k));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: