QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#252193 | #7789. Outro: True Love Waits | Lynkcat# | WA | 2ms | 13368kb | C++20 | 1.7kb | 2023-11-15 16:27:18 | 2023-11-15 16:27:18 |
Judging History
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'