P1885 Moo 50分求调
  • 板块学术版
  • 楼主Ultra_Limit
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/20 11:32
  • 上次更新2025/1/20 14:13:09
查看原帖
P1885 Moo 50分求调
1284065
Ultra_Limit楼主2025/1/20 11:32
#include <bits/stdc++.h>
using namespace std;
const int N=1e8;
int n,step;
long long length_s[N];
void find(int n,int step)
{
	if(step==0)
	{
		if(n==1)
		{
			cout<<"m";
			exit(0);
		}
		if(n==2||n==3)
		{
			cout<<"o";
			exit(0);
		}
	}
	if(step==1)
	{
		if(n==1||n==4||n==8)
		{
			cout<<"m";
			exit(0);
		}
		else
		{
			cout<<"o";
			exit(0);
		}
	}
	long long middle_length=1+(step+2);
	long long left_length=(length_s[step]-middle_length)/2;
	long long right_length=left_length;
	if(n>=left_length+middle_length)//The third block
	{
		find(n-(left_length+middle_length),step-1);
	}
	else//The second block
	{
		if(n-left_length==1)
		{
			cout<<"m";
			exit(0);
		}
		else
		{
			cout<<"o";
			exit(0);
		}
	}
}
int main()
{
	cin>>n;
	step=0;
	length_s[0]=3;
	while(length_s[step]<n)
	{
		step++;
		length_s[step]=length_s[step-1]*2+1+(step+2);
		if(length_s[step]>=n)
		{
			break;
		}
	}
	find(n,step);
	return 0;
}

代码如上(只得了50pts)

2025/1/20 11:32
加载中...