QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#281413 | #7789. Outro: True Love Waits | ucup-team2894# | WA | 0ms | 3824kb | C++20 | 1.7kb | 2023-12-10 04:19:57 | 2023-12-10 04:19:58 |
Judging History
answer
#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<(b);++i)
using namespace std;
using pii = pair<int,int>;
using ll = long long;
using ull = unsigned long long;
using lll = __int128;
using pll = pair<ll,ll>;
using vi = vector<int>;
#define fr first
#define sc second
using ld = long double;
#define all(x) (x).begin(), (x).end()
const int maxn = 1e6+10, inf = 1e9+100;
const ll linf = 8e18+100;
const int mod = 1e9+7;
// #define cerr if(0) cerr
ll po(ll a,ll b){
ll ans = 1;
for(a%=mod;b;b>>=1,a=a*a%mod)if(b&1)ans=ans*a%mod;
return ans;
}
ll inv(ll a){
return po(a,mod-2);
}
ll num4s(ll n){
return (po(4,n+1)-1)*inv(3)%mod;
}
void solve () {
string s,t;
ll k;
cin >> s >> t >> k;
reverse(all(s));
reverse(all(t));
s.resize(max(s.size(),t.size()), '0');
t.resize(s.size(), '0');
for(int i=0;i<s.size();i++)s[i]^=t[i];
if(s.size()%2)s.push_back(0);
int numdz = 0;
bool iszero = true;
// for(int i=0;i<s.size();i++)cerr << int(s[i]) << " ";
for(int i=0;i<s.size();i++){
if(s[i]==0)numdz++;
else {
iszero = false;
break;
}
}
// cerr << endl;
numdz /= 2;
k--;
if(iszero) {
ll ans = ( num4s(k)-1)%mod;
if(ans<0)ans+=mod;
cout << ans << "\n";
return;
}
if(k>numdz){
cout << "-1\n";
return;
}
ll ans = 0;
for(int i=numdz;i*2<s.size();i+=2){
int num = s[2*i+1]*2+(s[2*i+1]^s[2*i]);
ans = (ans + num * num4s(i)) %mod;
}
ans = (ans + num4s(k)-1)%mod;
if(ans<0)ans+=mod;
cout << ans << "\n";
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout<<fixed;
cout.precision(20);
int tc;
cin >> tc;
while(tc--)
solve();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3564kb
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: 0ms
memory: 3568kb
input:
1 0 0 1
output:
0
result:
ok 1 number(s): "0"
Test #3:
score: -100
Wrong Answer
time: 0ms
memory: 3824kb
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:
15 44 64 65 15 23 24 3 22 45 3 24 64 2 45 10 22 3 24 64 22 24 44 64 65 22 23 66 24 3 15 3 66 15 23 65 64 15 3 23 24 42 64 44 1 0 63 3 24 15 10 1 65 24 22 44 66 3 23 10 21 24 23 43 21 5 2 44 42 3 22 65 44 24 45 24 24 23 24 65 45 1 44 5 24 3 64 45 3 5 64 43 22 1 3 22 2 5 42 44
result:
wrong answer 1st numbers differ - expected: '78', found: '15'