求助!第二个点MLE了(快哭了)
  • 板块P1885 Moo
  • 楼主吃不饱QAQ
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/3/18 15:08
  • 上次更新2023/10/28 06:19:44
查看原帖
求助!第二个点MLE了(快哭了)
416021
吃不饱QAQ楼主2022/3/18 15:08
#include<stdio.h>
char a[int(1e9)+10];//用数组存储 
int len;//len记录字符串的长度,我把第一个元素放到下标1,len是最后一个元素的下标。 
int main()
{
   int n,i,j;
   scanf("%d",&n);
   len=0;//最开始数组为空 
   for(i=1;;i++)//每次循环是在算s[i-1],存在a数组里 
   {
   	//len之前的都不用动 
   	a[len+1]='m';//打印m 
   	for(j=1;j<=i+1;j++)
   	{
   		a[len+1+j]='o';
   		if(len+1+j>=n)//数据每多一个就判断一次,防止爆int和数组越界 
   		{
   			printf("%c",a[n]);
   			return 0;
   		}
   	}//打印i+1个o ,不是i+2,因为正在算s[i-1] 
   	for(j=0;j<len;j++)
   	{
   		a[len+i+3+j]=a[j+1];
   		if(len+i+3+j>=n)//同上 
   		{
   			printf("%c",a[n]);
   			return 0;
   		}
   	}//再打印一次上一个字符串 
   	len=len+i+2+len;//更改len值 
   }
   return 0;
}

我的做法就是大模拟

本地运行输入1e9有结果,但在洛谷ide上2.8e8就内存超限了.

2022/3/18 15:08
加载中...