多题目

CSPJ2021 完善程序1  

(Josephus 问题) 有n个人围成一个圈,依次标号0至n-1.从0号开始,依次 0, 1, 0, 1,...交替报数,报到1的人会离开,直至圈中只剩下一个人。求最后剩下人的编号。
试补全模拟程序。

#include <iostream>
using namespace std;
const int MAXN =1000000;
int F[MAXN];
int main() {
	int n;
	cin >>n;
	int i = 0,p = 0, c = 0;
	while (___(1)___) {
		if(F[i] == 0 ) {
			if(___(2)___) {
				F[i] = 1;
				___(3)___;
			}
			___(4)___;
		}
		___(5)___;
	}
	int ans = -1;
	for (i =0 ; i < n; i++)
		if (F[i] == 0)
			ans = i;
	cout << ans << endl;
	return 0;
}

第1题 单选

⑴处应填( )。

A.

i<n

B.

c<n

C.

i<n-1

D.

c<n-1

第2题 单选

②处填( )

A.

i%2==0

B.

i%2==1

C.

p

D.

!p

第3题 单选

③处填( )

A.

i++

B.

i=(i+1)%n

C.

c++

D.

p^=1

第4题 单选

④处填()

A.

i++

B.

i=(i+1)%n

C.

c++

D.

p^=1

第5题 单选

⑤处填( )

A.

i++

B.

i=(i+1)%n

C.

c++

D.

p^=1

发表评论

登录 后再回复