QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#252193#7789. Outro: True Love WaitsLynkcat#WA 2ms13368kbC++201.7kb2023-11-15 16:27:182023-11-15 16:27:18

Judging History

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

  • [2023-11-15 16:27:18]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:13368kb
  • [2023-11-15 16:27:18]
  • 提交

answer

#include<bits/stdc++.h>
#define poly vector<int>
#define IOS ios::sync_with_stdio(false)
#define ll long long
#define mp make_pair
#define mt make_tuple
#define pa pair < int,int >
#define fi first
#define se second
#define inf 1e18
#define mod 1000000007
#define sz(x) ((int)((x).size()))
#define int ll
// #define N 
using namespace std;
const int N=1000005;
int f[N],a[N];
void BellaKira()
{
    string x,y;
    cin>>x>>y;
    reverse(x.begin(),x.end());
    reverse(y.begin(),y.end());
    int len=max(sz(x),sz(y));
    for (int i=0;i<len;i++) 
    {
        a[i]=0;
        if (i<sz(x)) a[i]^=(x[i]-'0');
        if (i<sz(y)) a[i]^=(y[i]-'0');
    }
    if (len%2!=0) len++;
    while (len>=2&&a[len-1]==0&&a[len-2]==0) len-=2;
    if (len==0)
    {
        int k;
        cin>>k;
        cout<<f[k-1]<<'\n';
        return;
    }
    int tp=1;
    for (int i=0;i<len;i+=2)
        if (a[i]==0&&a[i+1]==0) tp++;
        else break;
    int k;
    cin>>k;
    // cout<<tp<<" "<<k<<endl;
    if (tp<k)
    {
        cout<<"-1\n";
        return;
    }
    int ans=0;
    for (int i=len-1;i>=0;i-=2)
    {
        if (a[i]==0&&a[i-1]==1) ans=(ans+f[i/2]+1)%mod;
        if (a[i]==1&&a[i-1]==1) ans=(ans+(f[i/2]+1)*2%mod)%mod;
        if (a[i]==1&&a[i-1]==0) ans=(ans+(f[i/2]+1)*3%mod)%mod;
    }
    k--;
    ans=(ans+f[k])%mod;
    cout<<ans<<'\n';
}
signed main()
{
    f[0]=0;
    for (int i=1;i<N;i++) f[i]=(f[i-1]+1)*4;
    IOS;
    cin.tie(0);
    int T=1;
    cin>>T;
    while (T--)
    {
        BellaKira();
    }
}
/*list:
1.mod 998244353 or 1e9+7 or ???
2.N
3.duipai shuju xingtai duoyidian
...
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 12140kb

input:

4
1 10 1
1 10 2
100 0 2
11 11 3

output:

2
-1
9
20

result:

ok 4 number(s): "2 -1 9 20"

Test #2:

score: 0
Accepted
time: 2ms
memory: 12584kb

input:

1
0 0 1

output:

0

result:

ok 1 number(s): "0"

Test #3:

score: -100
Wrong Answer
time: 2ms
memory: 13368kb

input:

100
110111 11111 1
10110 101101 1
11010 111111 1
100110 1 1
10010 11010 1
1100 10111 1
100100 111110 1
101110 101100 1
1011 10110 1
110100 1110 1
11010 11000 1
11110 1000 1
111000 11101 1
110 1001 1
101010 11000 1
10 111110 1
110001 101000 1
1010 1000 1
10101 11 1
111011 11010 1
110001 100000 1
1100...

output:

78
59
69
70
78
59
39
3
32
60
66
50
69
12
45
52
37
3
29
64
22
39
54
69
65
48
33
76
55
81
57
76
81
15
23
70
69
57
18
23
29
42
69
54
6
0
63
3
50
15
10
16
80
45
58
59
71
13
23
31
21
34
23
48
42
47
70
44
42
3
37
75
59
29
55
39
29
28
29
70
55
16
54
47
45
18
79
60
8
26
64
58
32
6
8
37
2
68
42
44

result:

wrong answer 5th numbers differ - expected: '15', found: '78'