QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#574035 | #2519. Number with Bachelors | ddxrS | TL | 45ms | 54844kb | C++23 | 1.7kb | 2024-09-18 20:38:12 | 2024-09-18 20:38:13 |
Judging History
answer
//½øÖÆת»»ºÃÌâ°¡
#include<bits/stdc++.h>
typedef unsigned long long ll;
using namespace std;
int a[25], B, cnt;
ll f[2][2][25][1 << 16], l, r;
ll dfs(int pos, int tmp, bool limit, bool flg) {
if(pos == -1) return 1;
if(!limit && f[flg][B == 10][pos][tmp] != 18446744073709551615ull) return f[flg][B == 10][pos][tmp];
ll up = limit ? a[pos] : B - 1, res = 0;
for(int i = 0; i <= up; i++) if(!(flg | (i > 0)) || !(tmp & (1 << i))) res += dfs(pos - 1, (flg | (i > 0)) ? (tmp | (1 << i)) : tmp, limit & (i == up), flg | (i > 0));
if(!limit) f[flg][B == 10][pos][tmp] = res;
return res;
}
ll init(ll x) {
cnt = 0;
while(x) a[cnt++] = x % B, x /= B;
return dfs(cnt - 1, 0, 1, 0);
}
ll read() {
ll qpow = 1, sum = 0;
string s;
cin>>s;
for(int i = s.length() - 1; ~i; i--) {
int p = (('0' <= s[i] && s[i] <= '9') ? s[i] - '0' : (s[i] - 'a' + 10));
sum += p * qpow;
qpow *= B;
}
return sum;
}
void print(ll x) {
if(x == 0) return cout<<0<<'\n', void();
cnt = 0; while(x) a[cnt++] = x % B, x /= B;
for(int i = cnt - 1; ~i; i--) {
if(a[i] <= 9) cout<<a[i];
else cout<<char(a[i] - 10 + 'a');
}
cout<<'\n';
}
void solve() {
char opt;
cin>>opt;
if(opt == 'd') B = 10; else B = 16;
cin>>opt;
if(opt == '0') {
l = read(), r = read();
print(init(r) - init(l - 1));
} else if(opt == '1') {
l = read();
ll L = 0, R = 9223372036854775807ll, mid, ans = -1;
while(L <= R) {
mid = L + R >> 1;
if(init(mid) >= l) ans = mid, R = mid - 1;
else L = mid + 1;
}
if(ans == -1) puts("-");
else print(ans);
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
memset(f, -1, sizeof f);
int t; cin>>t;
while(t--) solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 45ms
memory: 54844kb
input:
6 d 0 10 20 h 0 10 1f d 1 10 h 1 f d 1 1000000000 h 1 ffffffffffffffff
output:
10 f 9 e - -
result:
ok 6 lines
Test #2:
score: -100
Time Limit Exceeded
input:
50000 h 1 147a d 0 25 71 d 1 3587 d 0 26922 51887 d 1 711 d 0 3 5 h 0 7bf2defab442a0b1 f299a4cf1d4d9bed d 0 6961 91018 d 1 4 d 1 876 h 1 12cc5d3370f99120 d 1 161315 h 0 25f 6959 d 0 467 516 d 1 298 h 1 70260cdc2da73281 h 1 928e17d65d764ca2 h 1 c8ec8a7b67605e51 d 1 91697 d 0 4941925161850941148 89850...