问题标题: 洛谷:p1885 Moo

0
0
已解决
张岳恒
张岳恒
资深光能
资深光能
#include<iostream>
using namespace std;
int main(){
	int a,c=0;
	string s;
	cin>>a;
	while(a!=0){
		a--;
	if(c==1){
		s="o";
		c=0;
		continue;
	}	
	s="m";
	c++;
	}
	cout<<s;
	return 0;
} 

80分,一个点TLE,一个WA

原题如下:

题目描述

奶牛Bessie最近在学习字符串操作,它用如下的规则逐一的构造出新的字符串:

S(0) = “moo”

S(1) = S(0) + “m”+ “ooo” + S(0) = “moo” + “m” + “ooo” + “moo” = “moomooomoo”

S(2) = S(1) + “m” + “oooo” + S(1) = “moomooomoo” + “m” + “oooo” + “moomooomoo” = “moomooomoomoooomoomooomoo”

………

Bessie就这样产生字符串,直到最后产生的那个字符串长度不小于读入的整数N才停止。

通过上面观察,可以发现第k个字符串是由:第k-1个字符串 + “m” + (k+2个o) + 第k-1个字符串连接起来的。

现在的问题是:给出一个整数N (1 <= N <= 10^9),问第N个字符是字母‘m’还是‘o’?

输入格式

一个整数N。

输出格式

一个字符,m或者o

输入输出样例

输入 #1复制

11

输出 #1复制

m

说明/提示

样例解释:

由题目所知:字符串S(0)是moo, 现在要求第11个字符,显然字符串S(0)不够长;

同样S(1)的长度是10,也不够长;S(2)的长度是25,够长了,S(2)的第11个字符是m,所以答案就输出m。

张岳恒在2020-03-29 11:17:56追加了内容

改了一下仍是80

这次是两个点MLE

代码:

#include<iostream>
using namespace std;
string a[1000001];
int main(){
    a[0]="moo";
    int n,i=1;
    cin>>n;
    while(1){
        string tmp="";
        for(int j=1;j<=i+2;j++)tmp+="o";
        a[i]=a[i-1]+"m"+tmp+a[i-1];
        if(n<=a[i].size()){
            cout<<a[i][n-1];
            break;
        }
        i++;
    }
    return 0;
} 

@包涵宇 

张岳恒在2020-03-29 11:20:35追加了内容

发错了,是这个MLE

#include<iostream>
using namespace std;
string a[1000001];
int main(){
    a[0]="moo";
    long long n,i=1;
    cin>>n;
    while(1){
        string tmp="";
        for(int j=1;j<=i+2;j++)tmp+="o";
        a[i]=a[i-1]+"m"+tmp+a[i-1];
        if(n<=a[i].size()){
            cout<<a[i][n-1];
            break;
        }
        i++;
    }
    return 0;
} 

@包涵宇 


0
已采纳
包涵宇
包涵宇
中级天翼
中级天翼

上面都说了,是递归!!!

另外,n<=10^9

所以n是longlong!!!

具体代码:

a[0]="moo";
    while(1){
        string tmp="";
        for(int j=1;j<=i+2;j++)tmp+="o";
        a[i]=a[i-1]+"m"+tmp+a[i-1];
        if(n<=a[i].size()){
            cout<<a[i][n-1];
            break;
        }
        i++;
    }

自己试试

0
0
0
沈峻宇
沈峻宇
资深天翼
资深天翼

哇!包涵宇是大神也!

@包涵宇 

牛牛牛666

来晚了。只有说同意楼上的份了!

 

0
沈峻宇
沈峻宇
资深天翼
资深天翼

  

沈峻宇在2020-03-29 14:43:08追加了内容

额,手残了

0
赵朗
赵朗
高级光能
高级光能

刷洛谷吗

我谷歌浏览器打不开。

我要回答