QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#538094#8129. Binary SequenceIstleminAC ✓299ms161584kbC++142.0kb2024-08-30 23:47:162024-08-30 23:47:16

Judging History

你现在查看的是最新测评结果

  • [2024-08-30 23:47:16]
  • 评测
  • 测评结果:AC
  • 用时:299ms
  • 内存:161584kb
  • [2024-08-30 23:47:16]
  • 提交

answer

#include<bits/stdc++.h>

#pragma GCC optimize ("Ofast")
using namespace std;

#define rep(i,a,b) for(ll i = a; i<b;i++)
#define rrep(i,a,b) for(ll i = b-1; i>=a;i--)
#define trav(x,a) for(auto &x: a)
#define all(v) v.begin(),v.end()
#define sz(v) ll(v.size())

typedef long long ll;
typedef vector<ll> vl;
typedef pair<ll,ll> pll;

int main(){
    cin.tie(0);
    ios_base::sync_with_stdio(0);

    map<ll,vl> mp;
    mp[0].push_back(1);
    mp[1].push_back(2);
    mp[2].push_back(9);
    mp[2].push_back(3);
    mp[3].push_back(4);
    mp[4].push_back(5);
    mp[5].push_back(6);
    mp[5].push_back(3);
    mp[6].push_back(6);
    mp[6].push_back(0);
    mp[7].push_back(8);
    mp[8].push_back(7);
    mp[8].push_back(0);
    mp[9].push_back(9);
    mp[9].push_back(0);

    map<ll,string> mps;
    mps[0] = "01";
    mps[1] = "0111";
    mps[2] = "01111";
    mps[3] = "001";
    mps[4] = "00111";
    mps[5] = "001111";
    mps[6] = "0011";
    mps[7] = "1";
    mps[8] = "11";
    mps[9] = "011";

    vector<vl> s(1,vl(1,7));
    rep(i,0,60){
        s.emplace_back();
        for(auto x: s[sz(s)-2]){
            for(auto y:mp[x]) s.back().push_back(y);
            if(sz(s.back())>5e5) break;
        }
    }

    vector<string> a(sz(s));
    rep(i,0,sz(s)){
        for(auto x: s[i]){
            a[i] += mps[x];
        }
    }
    // cout<<"LENGTH: "<<sz(a[sz(a)-3])<<endl;

    // rep(i,0,10){
    //     reverse(all(a[i]));
    //     cout<<a[i]<<endl;
    // }

    rep(j,0,sz(a.back())){
        rep(i,0,57){
            if(sz(a[i])>j){
                // cout<<a[i][j];
                assert(a[i+2][j] == a[i][j]);
            }
        }
        // cout<<endl;
    }

    ll t; cin>>t;
    while(t--){
        ll n,m;
        cin>>n>>m;
        n--;
        if(n>=60){
            n = 58+(n%2);
        }
        if(sz(a[n])>m) cout<<a[n][m];
        else cout<<0;
        cout<<"\n";
    }
}

这程序好像有点Bug,我给组数据试试?

詳細信息

Test #1:

score: 100
Accepted
time: 273ms
memory: 158376kb

input:

10
4 0
4 1
4 2
4 3
4 4
4 5
4 6
6 3
6 7
118999881999119725 3

output:

1
1
0
1
1
1
0
1
1
0

result:

ok 10 numbers

Test #2:

score: 0
Accepted
time: 260ms
memory: 159484kb

input:

10
28 69772
10 7908
4 3198
4 85913
14 52729
3 20445
9 88912
17 23743
25 37356
2 97697

output:

0
0
0
0
0
0
0
0
0
0

result:

ok 10 numbers

Test #3:

score: 0
Accepted
time: 270ms
memory: 158012kb

input:

100
29 110358
18 13645
18 590344
36 550462
11 133055
8 769352
11 265432
7 158530
12 29189
2 830361
11 584395
31 693707
7 879812
19 25069
21 616926
3 85158
31 675739
17 118385
24 315535
29 59615
10 33445
17 609235
8 738138
20 209540
4 287616
32 522302
26 959741
5 453537
27 74313
28 296289
28 857972
2...

output:

0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
0
0
0
0
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0

result:

ok 100 numbers

Test #4:

score: 0
Accepted
time: 299ms
memory: 161584kb

input:

100000
702433635413308636 962533
864089450531108488 538792
262747333715821506 454514
859830947243984718 105219
365621373252206174 447331
890829905503831899 507146
116987306031929573 154370
157986473366693144 364746
502917586764426513 49981
874588963478161584 594867
467219058104100510 790503
11034861...

output:

1
1
1
1
1
1
1
0
1
0
1
0
1
1
1
1
0
1
1
1
1
1
0
1
0
0
0
0
1
1
1
0
0
1
1
0
0
1
0
1
1
1
1
0
0
0
0
1
1
0
0
1
0
0
1
0
1
1
1
1
1
1
1
0
1
1
1
0
0
0
1
1
1
0
1
1
1
1
1
1
0
1
0
1
1
1
0
0
0
1
0
0
1
0
1
1
1
1
1
1
0
0
0
0
0
0
0
1
0
0
1
0
1
0
1
0
1
1
0
1
1
0
1
0
0
0
1
1
0
1
1
0
0
1
1
1
1
1
0
0
0
0
0
0
1
1
1
0
0
1
...

result:

ok 100000 numbers

Extra Test:

score: 0
Extra Test Passed