UVa 10935 - Throwing cards away I

鏈接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1876

題目描述:桌上有n(n<=50)張牌,從第一張開始,從上往下依次編號爲1~n。當至少還剩下兩張牌時進行以下操作:把第一張牌扔掉,然後把新的第一張牌放到整疊牌的最後。輸入每行包含一個n,輸出每次扔掉的牌以及最後剩下的牌。

題目比較簡單,注意輸出格式,當n=1時,“Discarded cards:”後沒有空格。

代碼如下(vs2012運行通過):

// 10935.cpp : 定義控制檯應用程序的入口點。
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <fstream>

using namespace std;

#define FILE



int _tmain(int argc, _TCHAR* argv[])
{
#ifdef FILE
	ifstream in("data.txt");
	ofstream out("output.txt");
	cin.rdbuf(in.rdbuf());
	cout.rdbuf(out.rdbuf());
#endif
	int n;
	while(cin>>n)
	{
		if(n==0)
			break;
		vector<int> data;
		for(int i=0;i<n;i++)
		{
			data.push_back(i+1);
		}
		cout<<"Discarded cards:";
		if(data.size()!=1)
			cout<<" ";
		while(data.size()>=2)
		{
			cout<<data[0];
			if(data.size()!=2)
				cout<<", ";
			data.erase(data.begin());
			data.push_back(data[0]);
			data.erase(data.begin());
		}
		cout<<'\n'<<"Remaining card: "<<data[0]<<endl;
	}
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章