40分蒟蒻求助1,3,4,5ac其他全mle

P3612 [USACO17JAN] Secret Cow Code S

Fikuzza @ 2023-08-22 09:57:59

#include <bits/stdc++.h>
using namespace std;
string s,f;
long long n,ls,lf;
int main()
{
    cin>>s>>n;
    ls=s.size();
    while(ls<n)
    {
        lf=ls;
        f=s;
        for(long long i=1;i<ls;i++)
        {
            f[i]=s[i-1];
        }
        f[0]=s[ls-1];
        s+=f;
        ls=s.size();
    }
    cout<<s[n-1];
    return 0;
}

by 1q2zb @ 2023-08-22 10:23:54

MLE说明string长度超出限制。

本蒟蒻也想不出来怎么写代码,,,

似乎可以通过某些数学运算得出n在s的位置。

希望对你有帮助

99999999999999999


by Fikuzza @ 2023-08-22 11:01:45

@1q2zb 那咋办呀呜呜呜


by GUANJUNHOU @ 2023-09-18 16:28:56

递推的题

两个处理 n是str的长度,i是递推回去的位置

(1)i+n/2+1=new place

(2)n+1=new place

没了


by wch666 @ 2023-09-19 17:23:13

@Fikuzza

我不记得是谁教我的

我现在也不记得怎么写

#include<bits/stdc++.h>
using namespace std;
long long n,x;
string s;
int main()
{
    cin>>s>>n;
    long long len=s.size();
    while(n>len)
    {
        x=len;
        while(x<n)
            x*=2;
        x/=2;
        n-=x+1;
        if(n == 0)
            n=x;
    }
    cout<<s[n-1];
    return 0;
}

by Fikuzza @ 2023-09-19 22:07:04

@wch666 我在台上讲的这都什么时候了。。。


by wch666 @ 2023-09-20 20:13:47

(⊙o⊙)…


|