为什么会mle ,而且第四个wrong了,求大神指点提高.万分感谢
  • 板块P1885 Moo
  • 楼主Titan_Hope
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/8/28 00:41
  • 上次更新2023/11/5 14:09:40
查看原帖
为什么会mle ,而且第四个wrong了,求大神指点提高.万分感谢
352285
Titan_Hope楼主2020/8/28 00:41
#include<iostream>
using namespace std ;
int x;
void solution(int sum,int n){
	if(x==1||x==2||x==3){//最后落在了moo 
		if(x==1){
			cout<<"m";
			return ;
		}
		else{
			cout<<"o";
			return ;
		}
	}
	//在sn-1和sn-1中间的时候 
	if(x==(sum-3-n)/2+1){
		cout<<"m";
		return; 
	}
	if(x>(sum-3-n)/2+1&&x<=(sum-3-n)/2+3+n){
		cout<<"o";
		return ;
	}
	//在两头即sn-1的时候 
	if(x>(sum-3-n)/2+3+n){
		x = x-(sum-3-n)/2+3+n;
		solution((sum-3-n)/2 , n-1);
	}
	else//在前面的sn-1里 ,不能省去因为只能保证第一个在后面那一节,不能保证后面的都在后面那一节,当递归一次(当前为sn时了)  
		//则x完全可以在前面的sn-1中. 
	{
		solution((sum-3-n)/2 , n-1);
	}
}
int main(void){
	//输入需要查找的数字
	cin>>x;
	//找到应该存在的n:
	int n=0;
	int sum=3;
		while(sum<x){
		n++;
		sum= 2*sum+n+3; //算出此时的sum 
	}
	solution(sum,n);
	return 0;
}
2020/8/28 00:41
加载中...