123

Gooooogle  •  8个月前


#include<iostream>
using namespace std;
int a[100000];//存数列
//int vis[100000] = { 0 };//标记有没有被取走
 
int main() {
	int n;
	int i,j;
	int num=0;//计数取了几个
	int count=0, lastcount=0;//计数取了几次

	cin >> n;//读入n
	for (int i = 1; i <= n; i++) {//读入数列
		a[i] = i;
	}

	while (num<n)
	{
		count++;//记录第几次操作
		for (i = 1; i <= n - num; i = i + 2) {//跳着取数
			if (a[i] == n) {//如果取到最后一位,记录次数
				lastcount = count;
			}

			//取完后,移位
			for (j = i + 1; j <= n - num; j++) {
				a[j - 1] = a[j];
			}

			num++;//取到数的个数更新
			a[j-1] = 0;//移完位后,最后一位赋值0;
			//i = i-1;
		}
	}
	cout << count << " " << lastcount;
	return 0;
}

评论:

2023NOI-J第一题


王码打金服_一题0.9  •  8个月前

请先登录,才能进行评论