シンプルなシミュレーション - リスは果物を食べます

・これは、サンプルが間違ったタイトルを示している。サンプル記述を変更:3,8,5,9。

・これは説明のサンプルですが、私は半時間傷つけます。

Loweの谷の入り口:P2069。

・タイトル:

Nリスの目の一方は、1,2行の下から果実配列を食べるのが好き、そして参照符号... Nを リス一度iはI + 1はI 5、及び足(= i *がiは5%+ 1 *)果実の数で分割される*ことができる最下果実から上方にジャンプし始め、i番目のホップスキップ場合は、上記の果物、果物を食べて、重力の下で、1スペースを下に落ちます。第フルーツ1 * 1 * 1 + 1%5 = 2果実から1ホップスキップは、第三の果実に進み、そして第三の果物を食べて、2日から4果実(果実が第三の元の位置に下がる)上果実の8に2 * 2 * 2 + 1%5 = 4をスキップし、第8を食べ、そう....

もちろん、果物の列の先頭のうちリスジャンプが常にあり、すべてのK倍に、それは果物のいずれかを食べることができません。それから彼女は、果物を食べるために、そのK番目のジャンプをやり直し、果物の底に戻ります。だから、どのようなラベルである(つまり、Mホップの果物が食べて)メートルの唯一の果物を食べるためにそれを頼みますか?

・アイデア:

アレイは低下し続けています。

画像は、グループ数の第一、第二、第三の値を介してダンスを示しています。

・コード:

書式#include <iostreamの> 
の#include <CStringの> 
名前空間stdを使用。
INTのN、M、T。
[10005] int型。
INT YX(INT A)
{ 
	リターン(*はA * A)%5 + 1。
} 
(int型のx、int型エンド)ダウン無効
{ 
	(I = xをint型、iは=端を<; iは++)のために
	{ 
		[I] = [I + 1]。
		} 
} 
int型のmain()
{ 
	CIN >> N >> M。
	最後のint; 
	INTステップ= 1。
	T = N。
	以下のために(INT i = 1; iが<= N; iは++)
	[I] = I。
	以下のために(INT I = 1; I <= M; iは++)
	{ 
		int型、S。
		S =のY-X(I); //跳过个数
		場合(ステップ+ S <= T)//若没有超出界限
		{ 
		    最後=ステップ+ S; //所吃果子的位置
		    ステップ+ = S。
		    (私!= m)の場合
			{T - ; //最高点の位置座標-により落下するので、最高点の数も落ちる
		    (ステップ、t)をダウン; //配列落下
				} 
			} 
		他//それが限界超えた場合
		{ 
			STEP = 1; /。 /最下最初の果実をスキップ
		    最終+ =ステップS14; 
		    ステップ+ = S; 
		    IF(I = M!)
			{ 
				T--; 
		    ダウン(STEP、T); 
				} 
			} 
		} 
	COUT << [最終] << ENDL; 
	戻り0; 
}

  

おすすめ

転載: www.cnblogs.com/konglingyi/p/11299436.html