竞赛
考级
曼波
无限长的字符串是由一个小长度的字符串通过某种规律生成的,可以考虑使用递归还原。dfs(N,h)dfs(N,h)dfs(N,h) 第 hhh 次变换后在 NNN 位置的字符和题目要求的字符是对应字符。当 h=0h=0h=0 时,直接输出。否则就转换成在第 h−1h-1h−1 次变换所对应的字符。 【时间复杂度】 O(logN)O(logN)O(logN) 【预计得分】 100pts100pts100pts
AC君
#include <iostream> #include <bits/stdc++.h> using namespace std; string s; long long len,n; double q; long long x; int main(){ cin>>s>>n; len=s.size(); for(int i=len;i>=1;i--)s[i]=s[i-1]; long long i=n; long long num=len; while(num2<=n)num=2; if(num!=n)num*=2; while(1) { if(i<=len){ cout<<s[i]; return 0; } if(i==num/2+1)i=num/2; else if(i>(num/2))i=(i-1)-(num/2); num/=2; }
1*5
元气满满