QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#877883 | #5874. Mystery Square | oceeff | 41 ✓ | 435ms | 3584kb | C++14 | 1.8kb | 2025-02-01 11:50:56 | 2025-02-01 11:50:57 |
Judging History
answer
#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>
#ifdef ONLINE_JUDGE
#define getchar()(p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[1<<21],*p1=buf,*p2=buf;
#endif
#define int long long
using namespace std;typedef __int128 ll;int read(){int num=0,f=1;char c;while(!isdigit(c=getchar()))if(c=='-')f=-1;while(isdigit(c))num=num*10+(c&15),c=getchar();return num*f;}void write(ll x,char ch=' '){int F[40],cnt=0;if(!x)putchar('0');if(x<0)putchar('-'),x=-x;while(x)F[cnt++]=x%10+'0',x/=10;while(cnt)putchar(F[--cnt]);putchar(ch);}
namespace Main
{
int n;ll L,R,x,y,z,xx,yy,zz,ans;string ch;
ll cal1(int m,ll l,ll r){const ll S=((r-l)>>((m+1)/2))<<((m+1)/2);for(ll T=S;1;T=(T-1)&S){ll x=l|T,y=x+(((ll)1)<<((m+1)/2));for(ll j=sqrtl(x),t;j*j<=y;++j){t=j*j;if((l&t)==l&&(t&r)==t)return j;}if(!T)break;}return 0;}
ll cal2(int m,ll l,ll r,int p,ll z){if(p==(m+1)/2){ll t=z*z;if((l&t)==l&&(t&r)==t)return z;return 0;}
if(p==1||p==(m-1)/2||((r-l)>>(p+1)&1)){ll t=cal2(m,l,r,p+1,z);return t?t:cal2(m,l,r,p+1,z|((ll)1<<p));}
return cal2(m,l,r,p+1,((l^(z*z))>>(p+1)&1)<<p|z);}
ll solve(ll l,ll r){int m=0;for(;(((ll)1)<<m)<=l;++m);int c1=__builtin_popcountll((r-l)>>((m+1)/2)),c2=__builtin_popcountll((r-l)&((((ll)1)<<((m+1)/2))-1));
if(c1<c2)return cal1(m,l,r);return cal2(m,l,r,1,1);}
void main()
{
cin>>ch,L=R=ans=0;for(auto i:ch)L*=2,R*=2,L+=(i=='1'),R+=(i!='0');for(int i=0;R>>i;i+=2){z=solve(L>>i,R>>i);if(z){ans=(z*z)<<i;break;}}ch="";for(;ans;ans>>=1)ch.push_back('0'+(ans&1));reverse(ch.begin(),ch.end()),cout<<ch<<endl;
}
}
signed main()
{
const bool base=1,IO=0;int T;if(!base)T=1;else if(IO)T=read();else ios::sync_with_stdio(0),cin>>T;for(int i=1;i<=T;++i){if(base)cout<<"Case #"<<i<<": ";Main::main();}
return 0;
}
詳細信息
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 1ms
memory: 3584kb
input:
25 1??? 1 10??110??00??1000?? 1??010?0110?1010?0?010?0111011?11100?100010?0??0??1 1??11????00??1?1?0?1??01??110110?11?00100110?00100?0?00 11?1?1???11111?11?1??11110000?00?????00??0?000?000?1 10??000000?0?00000?00000000??0?0000???00??????0000??? 101???11??11000?????1??1?1??10??0?0100011?0001?01011001...
output:
Case #1: 1001 Case #2: 1 Case #3: 1011110110000100001 Case #4: 111010001100101000001010111011011100110001000110001 Case #5: 1101111110000101100101010111011001110010011000010000100 Case #6: 1111111111111111111111111000000000000000000000000001 Case #7: 1000000000000000000000000000000000000000000000000...
result:
ok 25 lines
Subtask #2:
score: 31
Accepted
Test #2:
score: 31
Accepted
time: 435ms
memory: 3584kb
input:
25 1????????????????????111101010000011100110101111000001011111100110000011000101100000010010110100101000???????????????????? 10?11100?000111??11?01010110100??1?100111?001000000??0101?110?0111?011?11?1??00010111?010??100?100??10?010?001001110111110?1 1000100111100100110011010111100001111010?????????...
output:
Case #1: 11100101110101010110111110101000001110011010111100000101111110011000001100010110000001001011010010100001101011000010100001 Case #2: 1011110000001110111001010110100001110011100010000001101010110001111011111110000010111101010100010010101010100100111011111001 Case #3: 1000100111100100110011010...
result:
ok 25 lines
Extra Test:
score: 0
Extra Test Passed