CSP-JT1求卡常
  • 板块灌水区
  • 楼主yinbe
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/10/30 21:48
  • 上次更新2023/11/2 10:36:57
查看原帖
CSP-JT1求卡常
759152
yinbe楼主2023/10/30 21:48
#include<bits/stdc++.h>
using namespace std;
int n,cnt,t=-1,step;
bitset<1000000005>bit;
int main()
{
	scanf("%d",&n);
	cnt=n;
	if((n-1)%3==0)//特判在第1轮就把第n个拿走的情况
	{
		t=1;
	}
	while(cnt>0)
	{
		++step;//又拿了一次苹果,轮数加1
		int count=2;//中间经过了几个苹果,等于2这样可以直接将第一个苹果拿走,省去一些特判
		for(int i=1;i<=n;++i)
		{
			if(bit[i])
			{
				continue;//如果第i个苹果已经拿走了,直接跳过
			}
			++count;
			if(count>2)//如果已经经过了2个苹果,将这个苹果拿走
			{
				count=0;//重新开始计数
				bit[i]=true;//把这个苹果拿走
				--cnt;//又少了一个苹果
				if(i==n&&t==-1)//如果拿走的是第n个
				{
					t=step;//记录是第几轮拿走的
				}
			}
		}
	}
	printf("%d %d",step,t);
	return 0;
}
2023/10/30 21:48
加载中...