QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#740911#6300. Best Carry Player 2OIer_kzc#TL 877ms1796kbC++171.3kb2024-11-13 12:14:282024-11-13 12:14:28

Judging History

你现在查看的是最新测评结果

  • [2024-11-13 12:14:28]
  • 评测
  • 测评结果:TL
  • 用时:877ms
  • 内存:1796kb
  • [2024-11-13 12:14:28]
  • 提交

answer

#include <stdio.h>
#include <string.h>

#include <vector>
#include <algorithm>

#define eb emplace_back

using namespace std;

typedef long long LL;
typedef __int128 LLL;
constexpr int N = 100005;

LLL wt[40];

char a[64];
int K;
LLL res;

void dfs(int dep, int req, LLL cur) {
	if (cur >= res || dep >= 37) {
		return;
	}
	if (req == 0) {
		res = cur;
		return;
	}
	if (cur + (10 - a[dep]) * wt[dep] >= res) {
		return;
	}
	if (a[dep]) {
		int i = dep + 1;
		while (a[i] == 9) {
			++i;
		}
		if (i - dep <= req) {
			a[i] += 1;
			dfs(i, req - (i - dep), cur + (10 - a[dep]) * wt[dep]);
			a[i] -= 1;
		}
	}
	dfs(dep + 1, req, cur);
}

void write(LLL res) {
	if (res > 9) {
		write(res / 10);
	}
	printf("%d", (int)(res % 10));
}

LLL solve() {
	if (K == 0) {
		int i = 0;
		while (a[i] == 9) {
			i += 1;
		}
		return wt[i];
	}
	res = wt[37];
	dfs(0, K, 0);
	return res;
}

int main() {
	*wt = 1ll;
	for (int i = 1; i < 38; ++i) {
		wt[i] = wt[i - 1] * 10;
	}
	int task;
	for (scanf("%d", &task); task--; ) {
		memset(a, 0, sizeof a);
		scanf("%s%d", a, &K);
		int len = strlen(a);
		for (int i = 0; i < len; ++i) {
			a[i] ^= 48;
		}
		reverse(a, a + len);
		write(solve()), puts("");
	}
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 1796kb

input:

4
12345678 0
12345678 5
12345678 18
990099 5

output:

1
54322
999999999987654322
9910

result:

ok 4 lines

Test #2:

score: 0
Accepted
time: 0ms
memory: 1664kb

input:

21
999990000099999 0
999990000099999 1
999990000099999 2
999990000099999 3
999990000099999 4
999990000099999 5
999990000099999 6
999990000099999 7
999990000099999 8
999990000099999 9
999990000099999 10
999990000099999 11
999990000099999 12
999990000099999 13
999990000099999 14
999990000099999 15
999...

output:

100000
10000
1000
100
10
1
900001
9900001
99900001
999900001
10000000001
9999910000
9999901000
9999900100
9999900010
9999900001
9000009999900001
99000009999900001
999000009999900001
99999999999999999900000000000000000
1000000000000000000

result:

ok 21 lines

Test #3:

score: 0
Accepted
time: 866ms
memory: 1672kb

input:

100000
119111011091190000 10
1911011191011999 16
110099199000119 0
19009911191091011 13
199090909919000900 17
19009010011919110 5
90910190019900091 18
10911100000101111 1
110090011101119990 4
100909999119090000 12
90901119109011100 2
111010119991090101 4
900991019109199009 5
100919919990991119 8
911...

output:

88988908810000
8088988808988001
10
88808908989
9800909090080999100
80890
909089809980099909
9
80010
9090000880910000
8900
9909
991
9008900
8880880090
8080090801
8009900808909899
80880898981
909
8800909
99988889901
89908888089
980908890980099000
100
9889801
81
908890008099900891
880990801
9998099
890...

result:

ok 100000 lines

Test #4:

score: 0
Accepted
time: 862ms
memory: 1756kb

input:

100000
900019901991919191 0
119199000910909911 18
190001990019910009 12
110091191100109001 6
10191091999110091 18
990011110190190090 5
900900000199919019 14
119100019910100099 17
909911111001111901 3
901100909911099 10
919009910101990019 7
911011009199199100 11
919111110190110999 0
91010111901190900...

output:

1
880800999089090089
9980089991
890999
989808908000889909
809910
99999800080990
80899980089899901
99
9090088901
8009981
8990800800900
1000
99089898880988091000
99101000
8988889980809
99008880080090009
10900
9998889909
889009889909901
808909990100
9090008889889089010
8099888899000
990898099098891000
...

result:

ok 100000 lines

Test #5:

score: 0
Accepted
time: 877ms
memory: 1764kb

input:

100000
90109000009190190 17
100091999119191900 13
119911991111100009 10
191199111011010091 12
99199110109099919 17
900011911110190199 7
990109199990010100 8
90191099199119101 13
101009019910001111 2
999199010010119119 1
91100991091900090 12
901100110901100900 4
10910910019101109 13
99011019901999010...

output:

909890999990809810
908000880808100
8888900991
888988990009
800889890900081
9809801
9990900
8900800880909
89
1
9008908099910
899100
9089980898891
80009899
1009
101
9899888080810
8808900888888981
80801
89890988080889809
88998009000900
90989809809890
889999100
988890810
98991
9900
9990008880980009100
8...

result:

ok 100000 lines

Test #6:

score: 0
Accepted
time: 869ms
memory: 1748kb

input:

100000
190090090190009901 8
110911911110919010 16
101101009991110 1
901011000199900 5
900119091100999099 11
191011011019019001 2
101090009999910019 3
999100919001019919 9
9910090910011001 14
909091191100090191 18
101190999191199909 16
9190199191991 11
19909100909900001 9
10001910011001019 18
1900000...

output:

9990099
89088088889080990
90
9800100
8899000901
99
981
998980090
89909089989009
90908808899909809
8809000808800091
9800808009
90099999
989998089988998981
1
98089
8898980988900100
898890989900
989090
9
989890008909999
100
9099
9
100
89909900091
10
9880899008810
999880098900880991000
9809088998810089
...

result:

ok 100000 lines

Test #7:

score: 0
Accepted
time: 853ms
memory: 1784kb

input:

100000
900101011999010011 17
109019011901009119 6
100001099109091110 12
909900011111999190 17
9191909111910001 17
99119900909191199 15
919999901110090900 11
910099099001091991 5
91019109990991191 13
911019000990111110 1
999099011119100011 1
99199110111911199 11
190111991190901100 4
91011190910911090...

output:

99898988000989990
990881
8900890908890
90099988888000810
90808090888089999
880099090808900
98890010100
8009
890009008809
90
9
89888088801
98900
890889100
988998880990989
98908090
910
899009998809889
990099080809100
9
8980998909898099
800090910
910
9
900
809888909898888810
10
99091
9909998909081
8989...

result:

ok 100000 lines

Test #8:

score: -100
Time Limit Exceeded

input:

100000
556678926267652258 2
929929657746014640 13
110808054835665500 13
603411220842314620 18
236920943881957481 13
228392045048443659 0
800016407284399949 4
891810444049711534 10
673038060913134012 8
497925775526719327 2
320546054458668782 7
22937449060095980 7
592739113092913372 15
378621488315118...

output:

42
70342253986000
191945164334500
9396588779157685380
9056118042519
10
60
5950288466
86865990
73
1331218
39904020
260886907086628
21378511684881483
27
74912313591831403
202572281666000677
10
2445141061145
1057747266722529
93751641
633355727
6592761984728
5909230
346570
397717429
97513000559636020
27...

result: