QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#609154 | #7789. Outro: True Love Waits | AmiyaCast | WA | 165ms | 3836kb | C++14 | 2.3kb | 2024-10-04 10:55:51 | 2024-10-04 10:55:52 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define pii pair<int, int>
#define pb push_back
#define pf push_front
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,b,a) for(int i=b;i>=a;--i)
const ll inf = 1145141919810;
using namespace std;
inline ll read() {
ll x=0,f=1;
char c=getchar();
while (c<'0' || c>'9') {
if (c=='-') f=-1;
c=getchar();
}
while (c>='0' && c<='9') {
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
inline void print(ll x) {
if(x < 0) putchar('-'), x = -x;
if(x > 9) print(x / 10);
putchar(x % 10 + '0');
return ;
}
inline void pprint(ll x) {
print(x);
puts("");
}
vector<ll> fac, t;
const int mod = 1e9 + 7;
ll jz(ll x) {
return (x % mod + mod) % mod;
}
void slv() {
string s, t;
ll k;
vector<int> a;
cin >> s >> t >> k;
reverse(s.begin(), s.end());
reverse(t.begin(), t.end());
while(s.length() < t.length()) s += "0";
while(s.length() > t.length()) t += "0";
if(s.length() % 2 == 0) s += "0", t += "0";
int len = s.length();
for(int i = 0; i < len; i = i + 2) {
string _s = "";
if(s[i + 1] == t[i + 1]) _s += "0";
else _s += "1";
if(s[i] == t[i]) _s += "0";
else _s += "1";
if(_s == "00") a.pb(0);
else if(_s == "01") a.pb(1);
else if(_s == "11") a.pb(2);
else if(_s == "10") a.pb(3);
}
while(a.size() && a[(int)a.size() - 1] == 0) a.pop_back();
if(a.size() == 0) {
cout << jz(fac[k - 1] - 1) << endl;
return ;
}
// puts("----");
// cout << a.size() << endl;
// for(auto x:a) cout << x;
// puts("\n----");
int n = a.size(), st = -1, cnt = 0;
for(int i = 0; i < n && a[i] == 0; ++i) st++;
// cout << "st = " << st << endl;
if(k > st + 2) {
cout << -1 << endl;
return;
}
ll ans = 0;
//如果能走到,那么就硬走,直到走到0
for(int i = n - 1; i > st; --i) {
ans = (ans + fac[i] * a[i] % mod) % mod;
}
if(st > -1) ans = (ans + jz(fac[k - 1] - 1) % mod) % mod;
// cout << "ans = " << ans << endl;
pprint(jz(ans));
//然后走完0就行了
return ;
}
int main() {
// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
fac.resize(1000), t.resize(1000);
fac[0] = 1;
for(int i = 1; i <= 999; ++i) {
fac[i] = fac[i - 1] * 4 % mod + 1;
fac[i] %= mod;
t[i - 1] = fac[i];
}
int _ = read();
while(_--) slv();
return 0;
}
/*
1
11 11 3
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3820kb
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: 3624kb
input:
1 0 0 1
output:
0
result:
ok 1 number(s): "0"
Test #3:
score: 0
Accepted
time: 1ms
memory: 3628kb
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 15 38 39 3 32 60 3 29 69 12 45 52 37 3 29 64 22 39 54 69 65 27 33 76 34 18 57 13 81 15 23 70 69 36 18 23 29 42 69 54 6 0 63 3 29 15 10 16 80 24 37 59 71 13 23 31 21 34 23 48 21 47 7 44 42 3 37 75 59 29 55 39 29 28 29 70 55 16 54 47 24 18 79 60 8 26 64 58 32 6 8 37 2 68 42 44
result:
ok 100 numbers
Test #4:
score: 0
Accepted
time: 1ms
memory: 3624kb
input:
100 10011111 111 2 1011101100 1000000100 1 100011111 1001001111 1 1001100101 1100100001 1 10101000 10000100 1 1011110101 100011101 1 110100001 111011010 1 1101001100 1111101101 1 1001101 11011010 1 1101110110 1101011000 1 110011001 1100001111 2 1001111001 1011001111 1 1001110 1101110100 2 1110110100...
output:
295 248 788 431 73 930 144 319 283 76 -1 305 -1 -1 86 -1 312 293 1293 433 1179 0 884 963 1215 576 -1 1132 499 811 864 949 1322 406 526 862 -1 447 1203 1238 873 -1 -1 1131 1108 438 134 359 80 740 1057 752 31 950 1093 1261 650 235 996 876 504 925 1344 450 1010 273 -1 1144 1041 717 -1 164 -1 11 798 419...
result:
ok 100 numbers
Test #5:
score: 0
Accepted
time: 2ms
memory: 3620kb
input:
1000 1010011001 1100000000 1 1111001110 100100011 1 10000001 1110100110 1 1001000010 1111011110 1 11110001 101101110 1 10110001 110010 1 110111100 1111011111 1 1010101010 1111110000 1 11010110 11000110 1 1101101100 10001101 1 1101000110 111100110 3 1101100 10110 1 1001101001 10010001 1 1000110100 11...
output:
633 1267 752 627 629 257 1173 465 21 916 1361 145 1250 1006 155 783 412 684 400 1126 1204 185 298 932 535 246 1094 325 272 -1 -1 389 164 -1 -1 644 436 1271 261 741 351 212 985 426 236 1356 952 1256 1039 911 709 547 1349 142 229 1077 538 48 1089 378 1152 524 218 1161 485 884 751 299 206 268 95 933 76...
result:
ok 1000 numbers
Test #6:
score: 0
Accepted
time: 6ms
memory: 3764kb
input:
1000 100110100101100101010111110010101010110011100011111101110010010001011001100100000001101110101111101 1110001111001100110000111010010101001111100010101010110110101001000001001000011101000011001110101011 1 11101111001001100011000010001010001011001101011110011011100111011111000000010000110100101001...
output:
218980472 -1 -1 517518581 -1 -1 85094150 666890546 885064041 -1 -1 189310507 730304733 -1 659799430 794266104 -1 -1 -1 760479713 644678967 837810902 535065049 -1 -1 -1 186342775 939519657 -1 257634724 172396207 442878387 -1 495325667 951414912 -1 -1 -1 714507638 -1 525066268 -1 -1 -1 920213221 -1 -1...
result:
ok 1000 numbers
Test #7:
score: 0
Accepted
time: 32ms
memory: 3836kb
input:
1000 1101010010111010000111000000000101000000111101010010010101110011000000111011010000110111000101001101010101110100000111000110110101100001111100010010001000011100100111100100000100101100001111010010000010111101010000000110011100011100100000010111110100000111010010110111000111010000101011011111011...
output:
392697873 -1 -1 -1 337638914 150474497 812988479 14301059 242433325 207160298 -1 345593651 -1 649843860 -1 -1 904010827 -1 505608125 898864826 772130764 5160799 234942297 -1 84958267 -1 -1 -1 -1 732394003 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 522542096 -1 349811717 -1 -1 -1 52557246 -1 850414...
result:
ok 1000 numbers
Test #8:
score: -100
Wrong Answer
time: 165ms
memory: 3588kb
input:
1000 1101111111110110100111000010100010011111010100000100100110011010110111110100000100101100110011111011101001001001000000010111010001111100101101111000010011010010111110111000111111100010100011100001010010110011001101110010110011010010110000101010001000101000011001111101001100011011011100011010101...
output:
883939508 15143492 -1 780814794 -1 323021456 -1 -1 -1 -1 -1 -1 150591365 -1 -1 -1 659014080 92323623 865848470 861202842 204109167 765606236 766648965 4696866 -1 -1 327107224 428200113 240437199 249181352 257593222 -1 -1 493153041 -1 210191142 837071909 721142327 -1 -1 566407626 -1 -1 -1 -1 -1 -1 12...
result:
wrong answer 1st numbers differ - expected: '800723017', found: '883939508'