社区讨论

50分求大佬调,必关很急

P1885Moo参与者 2已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@mkdzof6o
此快照首次捕获于
2026/01/14 20:20
上个月
此快照最后确认于
2026/01/17 21:35
上个月
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
long long n;
int a[10000];
char s1(int x,int t){
	if(t==0){
		if(x==1)return 'm';
		else if(x==2)return 'o';
		else if(x==3)return 'o';
	}
	if(x<=a[t-1])s1(x,t-1);
	else if(x>a[t]-a[t-1])s1(x-(a[t]-a[t-1]),t-1);
	else if(x==a[t-1]+1)return 'm';
	return 'o';
}
int s(int x){
	int su=3;
	int k=1;
	while(su<x){
		su=a[k-1]*2+1+(k+2);
		a[k]=su;
		k++;
	}
	return k-1;
}
int main(){
	cin>>n;
	a[0]=3;
	long long t=s(n);
	cout<<s1(n,t);
	return 0;
}
为什么把第20行改成su=su*2+1+(k+2);就对了,这两个不应该是等量的吗

回复

11 条回复,欢迎继续交流。

正在加载回复...