思路
//当 N为原始的下一位
// cow wco
//发现把最后一位提前以后,两边的不变。
//若要寻找大于初始的一半,则只需要减去前面的一半
//但题目又把最后一个字符提前 则寻找减去 len+1
//还有一点 若n-len-1等于0的话,则说明是原来的最后一位
源码
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[105],ch;
long long n,num=0;
while(scanf("%c",&ch),ch!=' '){
a[++num]=ch;
}
cin>>n;
while(num<n){
long long len=num;
while(n>2*len) len*=2;
n-=(len+1);//根据原数组的长度求反转后数组中字符的位置,对应的原数组的位置
if(n==0) n=len; //原数组的最后一位,反转的第一位
}
cout<<a[n]<<endl;
return 0;
}