QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#431387 | #7979. 棋盘 | _LAP_ | 0 | 671ms | 3964kb | C++14 | 3.6kb | 2024-06-05 14:09:28 | 2024-06-05 14:09:28 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
struct Bigint {
vector<int> v;
inline const int size() const {return v.size(); }
inline void flatten() {
for(int i = 1; i < v.size(); i ++) {
if(v[i - 1] >= 10) v[i] += v[i - 1] / 10, v[i - 1] %= 10;
}
while(v.size() > 1 && v.back() == 0) v.pop_back();
while(v.back() >= 10) {
int x = v.back() / 10; v.back() %= 10;
v.emplace_back(x);
}
}
Bigint(unsigned long long x = 0) {
v.clear();
do {
v.emplace_back(x % 10);
x /= 10;
} while(x);
}
Bigint(const string &str) {
v.resize(str.size());
for(int i = 0; i < str.size(); i ++)
v[i] = str[i] - '0';
}
};
Bigint operator + (const Bigint &lhs, const Bigint &rhs) {
Bigint res = lhs; int siz = max(lhs.size(), rhs.size());
res.v.resize(siz, 0);
for(int i = 0; i < rhs.size(); i ++) res.v[i] += rhs.v[i];
res.flatten(); return res;
}
Bigint operator - (const Bigint &lhs, const Bigint &rhs) {
Bigint res = lhs; int siz = max(lhs.size(), rhs.size());
res.v.resize(siz, 0);
for(int i = 0; i < rhs.size(); i ++) {
res.v[i] -= rhs.v[i];
while(res.v[i] < 0) res.v[i] += 10, res.v[i + 1] --;
}
res.flatten(); return res;
}
bool operator == (const Bigint &lhs, const Bigint &rhs) {
if(lhs.size() != rhs.size()) return false;
for(int i = 0; i < lhs.size(); i ++)
if(lhs.v[i] != rhs.v[i]) return false;
return true;
}
bool operator < (const Bigint &lhs, const Bigint &rhs) {
if(lhs.size() != rhs.size()) return lhs.size() < rhs.size();
for(int i = lhs.size() - 1; i >= 0; i --)
if(lhs.v[i] != rhs.v[i]) return lhs.v[i] < rhs.v[i];
return false;
}
bool operator > (const Bigint &lhs, const Bigint &rhs) {
if(lhs.size() != rhs.size()) return lhs.size() > rhs.size();
for(int i = lhs.size() - 1; i >= 0; i --)
if(lhs.v[i] != rhs.v[i]) return lhs.v[i] > rhs.v[i];
return false;
}
bool operator >= (const Bigint &lhs, const Bigint &rhs) {return lhs > rhs || lhs == rhs; }
bool operator <= (const Bigint &lhs, const Bigint &rhs) {return lhs < rhs || lhs == rhs; }
ostream& operator << (ostream &out, const Bigint &x) {
for(int i = x.size() - 1; i >= 0; i --)
out << x.v[i];
return out;
}
int k, q, x, y;
Bigint maxv;
vector<Bigint> fib; int tot;
vector<pair<int, int>> vis;
int main() {
ios::sync_with_stdio(false), cin.tie(0);
fib.emplace_back(Bigint(0)), fib.emplace_back(Bigint(1));
cin >> k >> q >> x >> y;
maxv.v.resize(k + 1, 0), maxv.v.back() = 1; tot = 1;
while(fib.back() <= maxv)
fib.emplace_back(fib[tot - 1] + fib[tot]), tot ++;
fib.pop_back(), tot --;
for(int i = 1; i <= tot; i += 2) {
vis.push_back({i + 1 >> 1, i + 1 >> 1});
vis.push_back({(i + 1 >> 1) + 1, i + 1 >> 1});
if(i + 1 <= tot) {
vis.push_back({i + 1 >> 1, (i + 1 >> 1) + 1});
vis.push_back({i + 1 >> 1, (i + 1 >> 1) + 2});
}
}
cout << vis.size() << '\n';
for(auto pr : vis) cout << pr.first << ' ' << pr.second << '\n';
while(q --) {
string str; cin >> str;
static char ans[(int)1e5];
Bigint val(str);
for(int i = 0; i < vis.size(); i ++) ans[i] = '0';
for(int i = tot; i >= 1; i --)
if(val >= fib[i]) val = val - fib[i], ans[i * 2] = '1';
for(int i = 0; i < vis.size(); i ++)
cout << ans[i];
cout << '\n';
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3820kb
input:
3 999 1000 340 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 ...
output:
32 1 1 2 1 1 2 1 3 2 2 3 2 2 3 2 4 3 3 4 3 3 4 3 5 4 4 5 4 4 5 4 6 5 5 6 5 5 6 5 7 6 6 7 6 6 7 6 8 7 7 8 7 7 8 7 9 8 8 9 8 8 9 8 10 00001000000000000000000000000000 00000010000000000000000000000000 00000000100000000000000000000000 00001000100000000000000000000000 00000000001000000000000000000000 000...
result:
wrong answer Wrong[2]
Subtask #2:
score: 0
Wrong Answer
Test #2:
score: 0
Wrong Answer
time: 26ms
memory: 3576kb
input:
12 10000 1000 340 358908473750 36343501002 904324605639 453955046266 725478753662 218319365131 882878650993 648345848966 474401697383 722377018680 718743783955 748051292505 167886140898 411111004914 327825244967 990026144963 623309580364 970889332700 319445927842 527624602835 453135227321 1153226125...
output:
118 1 1 2 1 1 2 1 3 2 2 3 2 2 3 2 4 3 3 4 3 3 4 3 5 4 4 5 4 4 5 4 6 5 5 6 5 5 6 5 7 6 6 7 6 6 7 6 8 7 7 8 7 7 8 7 9 8 8 9 8 8 9 8 10 9 9 10 9 9 10 9 11 10 10 11 10 10 11 10 12 11 11 12 11 11 12 11 13 12 12 13 12 12 13 12 14 13 13 14 13 13 14 13 15 14 14 15 14 14 15 14 16 15 15 16 15 15 16 15 17 16 1...
result:
wrong answer Wrong[2]
Subtask #3:
score: 0
Wrong Answer
Test #5:
score: 0
Wrong Answer
time: 654ms
memory: 3964kb
input:
100 10000 1000 340 87490023455826213450979333037504606824522062808297739018786336978222089712660133428564103979384831 874900289913204769749000879539227331559680630241808944569515663934025397982898503777823815274323967 8749002899116133353924895735921513229471979456689635148877567298640178774668643967...
output:
960 1 1 2 1 1 2 1 3 2 2 3 2 2 3 2 4 3 3 4 3 3 4 3 5 4 4 5 4 4 5 4 6 5 5 6 5 5 6 5 7 6 6 7 6 6 7 6 8 7 7 8 7 7 8 7 9 8 8 9 8 8 9 8 10 9 9 10 9 9 10 9 11 10 10 11 10 10 11 10 12 11 11 12 11 11 12 11 13 12 12 13 12 12 13 12 14 13 13 14 13 13 14 13 15 14 14 15 14 14 15 14 16 15 15 16 15 15 16 15 17 16 1...
result:
wrong answer Wrong[2]
Subtask #4:
score: 0
Wrong Answer
Test #7:
score: 0
Wrong Answer
time: 627ms
memory: 3716kb
input:
100 10000 990 310 4083451712318559926139496762164571032902328806667934236880329773320213539959944736095945843081512968 7811890641057562314768022152641517082686481268288006737090208624016586608183953908313798353213188661 97358161226180890688421784730819518002666166790210320310558753031161862165361257...
output:
960 1 1 2 1 1 2 1 3 2 2 3 2 2 3 2 4 3 3 4 3 3 4 3 5 4 4 5 4 4 5 4 6 5 5 6 5 5 6 5 7 6 6 7 6 6 7 6 8 7 7 8 7 7 8 7 9 8 8 9 8 8 9 8 10 9 9 10 9 9 10 9 11 10 10 11 10 10 11 10 12 11 11 12 11 11 12 11 13 12 12 13 12 12 13 12 14 13 13 14 13 13 14 13 15 14 14 15 14 14 15 14 16 15 15 16 15 15 16 15 17 16 1...
result:
wrong answer Wrong[2]
Subtask #5:
score: 0
Wrong Answer
Test #9:
score: 0
Wrong Answer
time: 661ms
memory: 3804kb
input:
100 10000 1050 260 8749002899132047697490008908470485461412677723566863434996575047286849703722697797645542008396185599 8749002899132047697490008908470485461412677699052921091826559946707718798046219210886366418022957055 7655377536740541735303757766642121742076255665128332760334129720709510994307378...
output:
960 1 1 2 1 1 2 1 3 2 2 3 2 2 3 2 4 3 3 4 3 3 4 3 5 4 4 5 4 4 5 4 6 5 5 6 5 5 6 5 7 6 6 7 6 6 7 6 8 7 7 8 7 7 8 7 9 8 8 9 8 8 9 8 10 9 9 10 9 9 10 9 11 10 10 11 10 10 11 10 12 11 11 12 11 11 12 11 13 12 12 13 12 12 13 12 14 13 13 14 13 13 14 13 15 14 14 15 14 14 15 14 16 15 15 16 15 15 16 15 17 16 1...
result:
wrong answer Wrong[2]
Subtask #6:
score: 0
Wrong Answer
Test #11:
score: 0
Wrong Answer
time: 667ms
memory: 3672kb
input:
100 10000 1050 240 8749002899132047697490008908470485461412677723572849734285100881333676956761384191490477496469520383 874886939179415873527191365288672777702448917037688119492655525651250910013304087281579324577152991 87490028991320476974900089084704854614126777235728490149522637601883528949454159...
output:
960 1 1 2 1 1 2 1 3 2 2 3 2 2 3 2 4 3 3 4 3 3 4 3 5 4 4 5 4 4 5 4 6 5 5 6 5 5 6 5 7 6 6 7 6 6 7 6 8 7 7 8 7 7 8 7 9 8 8 9 8 8 9 8 10 9 9 10 9 9 10 9 11 10 10 11 10 10 11 10 12 11 11 12 11 11 12 11 13 12 12 13 12 12 13 12 14 13 13 14 13 13 14 13 15 14 14 15 14 14 15 14 16 15 15 16 15 15 16 15 17 16 1...
result:
wrong answer Wrong[2]
Subtask #7:
score: 0
Wrong Answer
Test #13:
score: 0
Wrong Answer
time: 1ms
memory: 3676kb
input:
100 1 980 260 8749002899132047697490008908470485461309833682610292204604841418296589481615503153703163411103219711
output:
960 1 1 2 1 1 2 1 3 2 2 3 2 2 3 2 4 3 3 4 3 3 4 3 5 4 4 5 4 4 5 4 6 5 5 6 5 5 6 5 7 6 6 7 6 6 7 6 8 7 7 8 7 7 8 7 9 8 8 9 8 8 9 8 10 9 9 10 9 9 10 9 11 10 10 11 10 10 11 10 12 11 11 12 11 11 12 11 13 12 12 13 12 12 13 12 14 13 13 14 13 13 14 13 15 14 14 15 14 14 15 14 16 15 15 16 15 15 16 15 17 16 1...
result:
wrong answer Wrong[2]
Subtask #8:
score: 0
Wrong Answer
Test #19:
score: 0
Wrong Answer
time: 671ms
memory: 3712kb
input:
100 10000 960 240 8749002899132047697015724510954438324957730968977252383122989921226002617013223698533483281626692607 8749002899132047697490008908470485461412677720507858663971304708923117942496885325656574463725010943 87148271065573131361716885470369961093519598137825155235803895087505468828694702...
output:
960 1 1 2 1 1 2 1 3 2 2 3 2 2 3 2 4 3 3 4 3 3 4 3 5 4 4 5 4 4 5 4 6 5 5 6 5 5 6 5 7 6 6 7 6 6 7 6 8 7 7 8 7 7 8 7 9 8 8 9 8 8 9 8 10 9 9 10 9 9 10 9 11 10 10 11 10 10 11 10 12 11 11 12 11 11 12 11 13 12 12 13 12 12 13 12 14 13 13 14 13 13 14 13 15 14 14 15 14 14 15 14 16 15 15 16 15 15 16 15 17 16 1...
result:
wrong answer Wrong[2]