leo888 @ 2021-07-24 22:49:55
我是个bingbing 我就是逊了!! 正题: 我觉得思路是没错的,只是超时了 觉得我思路有错的大可以再看一遍 再三确认有错的话,就和我说!!! 注意:字符串+字符(串)是拼接起来! 下面来看解释: PS:求dalao回复,我想AC(实则不想被学校老师批) 嘿嘿嘿,能给一个关注吗?求求了
#include<bits/stdc++.h>
using namespace std;
string s;
stack<char>a;
char s1,s2[100001];
long long len,n,len1;
int main(){
cin>>s>>n;
len1=s.size();
while(len1<n){
len1*=2;//这个是用来减少时间的
}
for(long long j=0;j<len1;j++){
len=s.size();//判断长度
for(long long i=0;i<len;i++)a.push(s[i]);//压栈
s1=a.top();//掏出栈顶
a.pop();//将栈顶的是踢出
s=s+s1;//拼接
long long k=a.size();//栈里还有几个
for(long long i=k-1;i>=0;i--){
s2[i]=a.top();//掏出栈顶
a.pop(); //将栈顶的是踢出
}
for(long long i=0;i<k;i++)s=s+s2[i];//拼接
}
cout<<s[n-1];//输出。因为我从0开始,所以要-1
}
by 阿巴人上人 @ 2021-07-25 03:17:44
@李宇轩leo888
一看数据你这样必tle
估计是贪心
by 阿巴人上人 @ 2021-07-25 03:25:16
@李宇轩leo888
#include <bits/stdc++.h>
using namespace std;
string s;
long long n,num,i;
int main()
{
cin>>s>>n;
num=s.length();
while(num<n)
{
i=num;
while(n>i*2)
i*=2;
n-=(i+1);
if(n==0)
n=i;
}
cout<<s[n-1];
}
利用翻折推在原单词中的位置
by leo888 @ 2021-07-25 16:53:07
@阿巴人上人 感谢dalao
by Along_Dog @ 2021-09-19 10:31:54
#include<bits/stdc++.h>
using namespace std;
int main(){
string st;
cin>>st;
cout<<st[0];
}
这个30分