QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#568230 | #8347. 毒假强 | bear0131 | 100 ✓ | 33ms | 4208kb | C++14 | 2.3kb | 2024-09-16 15:39:02 | 2024-09-16 15:39:02 |
Judging History
answer
#include<bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < n; ++i)
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pii;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3fll;
template<typename T> inline void chmax(T &_a, const T &_b){ (_b>_a) ? (_a=_b) : (_a); }
template<typename T> inline void chmin(T &_a, const T &_b){ (_b<_a) ? (_a=_b) : (_a); }
int k; ll n;
inline void uadd(ll &a, const ll &b){ a += b; if(a >= INF) a = INF; }
inline ll add(const ll &a, const ll &b){ return (a + b >= INF) ? INF : (a + b); }
inline ll mul(const ll &a, const ll &b){ if(a > INF / b) return INF; else return a * b; }
ll dp[20][500];
int ans[100];
ll f[100][1010];
ll calc(int lvl){
int lmt = (50 / k);
ll ret = 0;
for(int cc = 1; cc <= lmt; ++cc){
int x[100];
{
__int128 tmp = 1;
rep(i, k) tmp *= 10;
--tmp;
tmp *= cc;
rep(i, k) x[i] = (int)(tmp % 10), tmp /= 10;
x[k] = (int)(tmp);
}
memset(dp, 0, sizeof(dp));
dp[0][0] = 1;
rep(i, k){
int sum = 0, cnt = 0;
for(int j = i; j <= 50; j += k){
if(j >= lvl) sum += ans[j];
else ++cnt;
}
for(int pre = 0; pre <= lmt; ++pre) for(int nxt = 0; nxt <= lmt; ++nxt){
int targ = nxt * 10 + x[i] - pre - sum;
if(targ < 0 || targ > cnt * 8) continue;
uadd(dp[i + 1][nxt], mul(dp[i][pre], f[cnt][targ]));
}
}
//cout << " " << cc << ": " << x[k] << ": " << dp[k][x[k]] << "\n";
uadd(ret, dp[k][x[k]]);
}
return ret;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
f[0][0] = 1;
for(int i = 0; i <= 50; ++i) for(int j = 0; j <= 8 * i; ++j) rep(x, 9)
uadd(f[i + 1][j + x], f[i][j]);
cin >> k >> n;
memset(ans, -1, sizeof(ans));
for(int i = 50; i >= 0; --i){
for(int x = 0; x <= 8; ++x){
ans[i] = x;
ll ret = calc(i);
if(ret >= n) break;
else n -= ret;
}
//cout << i << ": " << ans[i] << endl;
}
//for(int i = 50; i >= 0; --i) cout << ans[i];
//cout << "\n";
ll div = 1; rep(i, k) div *= 10; --div;
vi res; __int128 rem = 0;
bool has = 0;
for(int i = 50; i >= 0; --i){
rem = rem * 10 + ans[i];
if(rem >= div) has = 1;
if(has) cout << (int)(rem / div);
rem %= div;
}
assert(rem == 0);
cout << "\n";
return 0;
}
詳細信息
Subtask #1:
score: 25
Accepted
Test #1:
score: 25
Accepted
time: 6ms
memory: 4168kb
input:
2 653
output:
1069
result:
ok single line: '1069'
Test #2:
score: 25
Accepted
time: 6ms
memory: 3908kb
input:
2 729
output:
1168
result:
ok single line: '1168'
Test #3:
score: 25
Accepted
time: 6ms
memory: 3980kb
input:
2 378
output:
569
result:
ok single line: '569'
Test #4:
score: 25
Accepted
time: 4ms
memory: 3944kb
input:
3 673
output:
1329
result:
ok single line: '1329'
Test #5:
score: 25
Accepted
time: 3ms
memory: 3964kb
input:
3 803
output:
1514
result:
ok single line: '1514'
Test #6:
score: 25
Accepted
time: 4ms
memory: 3916kb
input:
3 999
output:
1772
result:
ok single line: '1772'
Test #7:
score: 25
Accepted
time: 16ms
memory: 4004kb
input:
1 754
output:
1142
result:
ok single line: '1142'
Test #8:
score: 25
Accepted
time: 3ms
memory: 3968kb
input:
3 673
output:
1329
result:
ok single line: '1329'
Test #9:
score: 25
Accepted
time: 0ms
memory: 4196kb
input:
3 728
output:
1390
result:
ok single line: '1390'
Test #10:
score: 25
Accepted
time: 0ms
memory: 3908kb
input:
3 644
output:
1277
result:
ok single line: '1277'
Test #11:
score: 25
Accepted
time: 4ms
memory: 3904kb
input:
3 403
output:
734
result:
ok single line: '734'
Test #12:
score: 25
Accepted
time: 6ms
memory: 4008kb
input:
2 196
output:
286
result:
ok single line: '286'
Test #13:
score: 25
Accepted
time: 15ms
memory: 3852kb
input:
1 73
output:
90
result:
ok single line: '90'
Test #14:
score: 25
Accepted
time: 6ms
memory: 3912kb
input:
2 661
output:
1079
result:
ok single line: '1079'
Test #15:
score: 25
Accepted
time: 11ms
memory: 3904kb
input:
1 648
output:
889
result:
ok single line: '889'
Subtask #2:
score: 35
Accepted
Test #16:
score: 35
Accepted
time: 23ms
memory: 3908kb
input:
1 345034715579071096
output:
2513029422339367072
result:
ok single line: '2513029422339367072'
Test #17:
score: 35
Accepted
time: 30ms
memory: 3904kb
input:
1 928064447724082316
output:
6841649390539291284
result:
ok single line: '6841649390539291284'
Test #18:
score: 35
Accepted
time: 25ms
memory: 3908kb
input:
1 541392330132197148
output:
3934945708734153715
result:
ok single line: '3934945708734153715'
Test #19:
score: 35
Accepted
time: 27ms
memory: 3908kb
input:
1 932096632324717020
output:
6866796948572468426
result:
ok single line: '6866796948572468426'
Test #20:
score: 35
Accepted
time: 33ms
memory: 3976kb
input:
1 114451898294099023
output:
751984975176342275
result:
ok single line: '751984975176342275'
Test #21:
score: 35
Accepted
time: 25ms
memory: 4168kb
input:
1 235498410350575794
output:
1678575115834518445
result:
ok single line: '1678575115834518445'
Test #22:
score: 35
Accepted
time: 30ms
memory: 3912kb
input:
1 263087596959546780
output:
1854129753611416834
result:
ok single line: '1854129753611416834'
Test #23:
score: 35
Accepted
time: 30ms
memory: 4200kb
input:
1 576677905677423798
output:
4168653345619750896
result:
ok single line: '4168653345619750896'
Test #24:
score: 35
Accepted
time: 27ms
memory: 3852kb
input:
1 715338160945566811
output:
5200349120580131175
result:
ok single line: '5200349120580131175'
Test #25:
score: 35
Accepted
time: 29ms
memory: 3908kb
input:
1 732471942288061103
output:
5313900915618634928
result:
ok single line: '5313900915618634928'
Test #26:
score: 35
Accepted
time: 22ms
memory: 3968kb
input:
1 81591921669173834
output:
533613350411224447
result:
ok single line: '533613350411224447'
Test #27:
score: 35
Accepted
time: 28ms
memory: 3960kb
input:
1 444041620832982561
output:
3172902012381803952
result:
ok single line: '3172902012381803952'
Test #28:
score: 35
Accepted
time: 30ms
memory: 3856kb
input:
1 6697181292380282
output:
39407408296042592
result:
ok single line: '39407408296042592'
Test #29:
score: 35
Accepted
time: 27ms
memory: 3908kb
input:
1 952035664236484391
output:
7007633864782456009
result:
ok single line: '7007633864782456009'
Test #30:
score: 35
Accepted
time: 24ms
memory: 3968kb
input:
1 119337166106580019
output:
792828609748126894
result:
ok single line: '792828609748126894'
Subtask #3:
score: 40
Accepted
Test #31:
score: 40
Accepted
time: 2ms
memory: 4136kb
input:
12 874620678069272691
output:
22463825142185819370
result:
ok single line: '22463825142185819370'
Test #32:
score: 40
Accepted
time: 2ms
memory: 3912kb
input:
16 802614516796786027
output:
35407415665622422294
result:
ok single line: '35407415665622422294'
Test #33:
score: 40
Accepted
time: 3ms
memory: 3968kb
input:
6 756647802834648987
output:
10438847716008292465
result:
ok single line: '10438847716008292465'
Test #34:
score: 40
Accepted
time: 5ms
memory: 3852kb
input:
3 226896403387130337
output:
2059211761939710776
result:
ok single line: '2059211761939710776'
Test #35:
score: 40
Accepted
time: 28ms
memory: 3852kb
input:
1 347488145421093192
output:
2527387074818969159
result:
ok single line: '2527387074818969159'
Test #36:
score: 40
Accepted
time: 2ms
memory: 4208kb
input:
14 193000621330864201
output:
6067357863414375200
result:
ok single line: '6067357863414375200'
Test #37:
score: 40
Accepted
time: 0ms
memory: 4208kb
input:
6 954115818600650251
output:
12864634150158375562
result:
ok single line: '12864634150158375562'
Test #38:
score: 40
Accepted
time: 0ms
memory: 4008kb
input:
17 743225133605738266
output:
37311263433846176756
result:
ok single line: '37311263433846176756'
Test #39:
score: 40
Accepted
time: 2ms
memory: 4128kb
input:
9 252020961388627232
output:
4250078145252196572
result:
ok single line: '4250078145252196572'
Test #40:
score: 40
Accepted
time: 2ms
memory: 3832kb
input:
12 625490241962472026
output:
15466218565422592895
result:
ok single line: '15466218565422592895'
Test #41:
score: 40
Accepted
time: 1ms
memory: 4032kb
input:
17 954452527346520859
output:
48142667151713611623
result:
ok single line: '48142667151713611623'
Test #42:
score: 40
Accepted
time: 6ms
memory: 3852kb
input:
3 976431687783080972
output:
8829664277323469345
result:
ok single line: '8829664277323469345'
Test #43:
score: 40
Accepted
time: 32ms
memory: 3940kb
input:
1 847601466910992894
output:
6192959617472541715
result:
ok single line: '6192959617472541715'
Test #44:
score: 40
Accepted
time: 4ms
memory: 4208kb
input:
4 151280662907406040
output:
1473815899034367653
result:
ok single line: '1473815899034367653'
Test #45:
score: 40
Accepted
time: 10ms
memory: 3940kb
input:
2 888548487913703829
output:
7283410115572769456
result:
ok single line: '7283410115572769456'