洛谷【P1885】Moo
阿新 • • 發佈:2018-10-01
class get turn problem line tchar code while 奶牛
我對分治的理解:https://www.cnblogs.com/AKMer/p/9728574.html
題目傳送門:https://www.luogu.org/problemnew/show/P1885
這題跟[[洛谷【P3612】USACO17JAN Secret Cow Code秘密奶牛碼差不太多,都是分治字符串然後亂搞一波就行了。
時間復雜度:\(O(logn)\)
空間復雜度:\(O(1)\)
代碼如下:
#include <cstdio> using namespace std; int n; char s[4]={' ','m','o','o'}; int read() { int x=0,f=1;char ch=getchar(); for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1; for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0'; return x*f; } char find(int id) { if(id<4)return s[id]; int tmp=3,pos=0; while(tmp<id)tmp=tmp*2+4+pos,pos++; int mid=tmp-pos-3;mid/=2; if(id<=mid)return find(mid); if(id<=mid+pos+3) { if(id!=mid+1)return 'o'; else return 'm'; } return find(id-(mid+pos+3)); } int main() { n=read(); printf("%c",find(n)); return 0; }
洛谷【P1885】Moo