:タイトル
Nカード、1-与えられたシーケンス番号n、その後、カードを捨て、カードが最終的に出し、この操作は、1枚のカードだけになるまで繰り返されます。
カードのシリアル番号と最後の残りのカードを捨てるための要求。
(A)サンプル入力
7枚の//カードから1-7番号 19に1から番号19枚の//カード 10 6 0
(B)サンプル出力
廃棄カード:1、3、5、7、4、2 残りのカード:6枚の 捨てカード:1、3、5、7、9、11、13、15、17、19、4、8、12、16、2、10、18、14 残りのカード:6枚の 廃棄カード:1、3、5、7、9、2、6、10、8 残りのカード:4枚の 廃棄カード:1、3、5、2、6 残りのカード:4
2:コードの実装
#define _CRT_SECURE_NO_WARNINGS する#include <iostreamの> の#include <キュー> 使用して名前空間はstdを、#define MAX_N 15 INT main103() { freopenは(" data5_3_h.in "、" R " 、STDIN)。 freopenは(" data5_3_h.out "、" W " 、STDOUT)。int型NUM、first_ele。 しばらく(!CIN >> NUM && NUM = 0 ) { キュー <整数>カード。 フラグ= 偽; 以下のために(int型 I = 1 ; I <= NUM iは++ ) card.push(i)を、 裁判所未満 << 「捨てられたカード:」; 一方、(!card.size()= 1 ) { 場合(!フラグ) { COUT << card.front()。 もし(!card.size()= 2 ) COUT << " " ; } 他 card.push(card.front())。 card.pop(); フラグ =!国旗; } coutの << " \のnRemainingカード:" << card.front()<< てendl; } freopenは(" CON "、" R " 、STDIN)。 freopenは(" CON "、" W " 、STDOUT)。 リターン 0 ; }