QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#331964#7698. ISBN Conversioncry#AC ✓1ms3888kbC++203.0kb2024-02-19 01:43:202024-02-19 01:43:20

Judging History

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

  • [2024-02-19 01:43:20]
  • 评测
  • 测评结果:AC
  • 用时:1ms
  • 内存:3888kb
  • [2024-02-19 01:43:20]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

map<char, string> mp;

void envy(){
	mp['A'] = "01";
	mp['B'] = "1000";
	mp['C'] = "1010";
	mp['D'] = "100";
	mp['E'] = "0";
	mp['F'] = "0010";
	mp['G'] = "110";
	mp['H'] = "0000";
	mp['I'] = "OO";
	mp['J'] = "0111";
	mp['K'] = "101";
	mp['L'] = "0100";
	mp['M'] = "11";
	mp['N'] = "10";
	mp['O'] = "111";
	mp['P'] = "0110";
	mp['Q'] = "1101";
	mp['R'] = "010";
	mp['S'] = "000";
	mp['T'] = "1";
	mp['U'] = "001";
	mp['V'] = "0001";
	mp['W'] = "011";
	mp['X'] = "1001";
	mp['Y'] = "1011";
	mp['Z'] = "1100";
	mp['0'] = "11111";
	mp['1'] = "01111";
	mp['2'] = "00111";
	mp['3'] = "00011";
	mp['4'] = "00001";
	mp['5'] = "00000";
	mp['6'] = "10000";
	mp['7'] = "11000";
	mp['8'] = "11100";
	mp['9'] = "11110";
}

#define ex {cout << "invalid" << endl; return;}

bool isdigit(char c){
	return c >= '0' && c <= '9';
}

void bruh(){
	string s; cin >> s;
	int n = s.size();
	if(s[0] == '-' || s.back() == '-') ex
	vector<int> hyp, dig;
	for(int i = 0; i < n; i++){
		if(isdigit(s[i])){
			dig.push_back(s[i] - '0');
		}
		else if(s[i] == '-'){
			hyp.push_back(i);
		}
		else if(s[i] == 'X'){
			if(i != n - 1) ex 
			dig.push_back(10);
		}
	}
	if(dig.size() != 10) ex 
	if(hyp.size() > 3) ex 
	if(hyp.size() == 3 && hyp.back() != n - 2) ex 
	for(int i = 0; i < (int)hyp.size() - 1; i++){
		if(hyp[i + 1] - hyp[i] == 1) ex
	}
	int correct_checksum = 0;
	for(int i = 0; i < dig.size(); i++){
		correct_checksum += (10 - i) * dig[i];
	}
	if(correct_checksum % 11 != 0) ex 
	vector<int> newdig = {9, 7, 8};
	for(int i: dig) newdig.push_back(i);
	int checksum = 0;
	for(int i = 0; i < (int)newdig.size() - 1; i++){
		if(i % 2 == 0){
			checksum += newdig[i];
		}
		else{
			checksum += 3 * newdig[i];
		}
		checksum %= 10;
	}
	// cout << checksum << endl;
	int v = (10 - checksum) % 10;
	cout << "978-" << s.substr(0, (int)s.size() - 1) << v << endl;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	// envy();
	int t; cin >> t;
	while(t--){
		bruh();
	}
}

	// string s; cin >> s;
	// int n = s.size();
	// for(int i = 0; i < n - 1; i++){
	// 	if(s[i] == 'O' && s[i + 1] == 'O'){
	// 		cout << "INVALID" << endl;
	// 		return 0;
	// 	}
	// }
	// if(s.back() != 'O'){
	// 	cout << "INVALID" << endl;
	// 	return 0;
	// }
	// for(ll start = 3; start < 1000; start += 2){
	// 	ll res = start;
	// 	bool ok = true;
	// 	for(int i = n - 2; i >= 0; i--){
	// 		if(s[i] == 'E'){
	// 			res *= 2;
	// 		}
	// 		else{
	// 			res--;
	// 			if(res % 3 != 0){
	// 				ok = false;
	// 				break;
	// 			}
	// 			res /= 3;
	// 		}
	// 		if(s[i] == 'E' && res % 2 == 1){
	// 			ok = false;
	// 			break;
	// 		}
	// 		if(s[i] == 'O' && res % 2 == 0){
	// 			ok = false;
	// 			break;
	// 		}
	// 		if(__builtin_popcountll(res) == 1){
	// 			ok = false;
	// 			break;
	// 		}
	// 	}
	// 	if(ok){
	// 		cout << res << "\n";
	// 	//	break;
	// 	}
	// }

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3540kb

input:

4
3-540-4258-02
039428013X
3-540-42580-2
0-14-028333-3

output:

invalid
978-0394280134
978-3-540-42580-9
invalid

result:

ok 4 lines

Test #2:

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

input:

25
----------
-----------
------------
-------------
XXXXXXXXXX
XXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXXX
---------X
----------X
-----------X
01234567890
012345678901
0123456789012
-0123456789-
0123456789-
-0123456789
01--23456789
012345678--9
0123456789--
--0123456789
98765432-1
987-654-321
87-645-32-...

output:

invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid

result:

ok 25 lines

Test #3:

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

input:

5
71234567X1
71234567X-1
2-2345678-9
8X-7X-123456
7123X8123X

output:

invalid
invalid
invalid
invalid
invalid

result:

ok 5 lines

Test #4:

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

input:

10
3-540-42580-X
3-540-42580-3
0393609394
0-19-853453-9
0070131510
0070131512
0070131514
0070131516
0070131518
007013151X

output:

invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid

result:

ok 10 lines

Test #5:

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

input:

11
767-13423100
65955-01-15-1
778592-4222
3283-138-073
8-802896-37-4
514-2481525
356-52708-6-6
4-810-73599-7
3-28438-244-8
1-98-2031209
82-54-55344X

output:

invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid
invalid

result:

ok 11 lines

Test #6:

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

input:

12
0123456789
0-19-853453-1
0070131511
0-07-0131511
039428013-X
0-39-428013X
0-3942801-3X
0131103628
3-540-42580-2
3540425802
1535956828
1535-9-5682-8

output:

978-0123456786
978-0-19-853453-2
978-0070131514
978-0-07-0131514
978-039428013-4
978-0-39-4280134
978-0-3942801-34
978-0131103627
978-3-540-42580-9
978-3540425809
978-1535956826
978-1535-9-5682-6

result:

ok 12 lines

Test #7:

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

input:

10
69289-01810
07-8-2406750
4946302-980
91-45-00652-0
2526831830
8370591930
022-18967-4-0
86340-22-25-0
862-57-6642-0
1691783730

output:

978-69289-01810
978-07-8-2406757
978-4946302-985
978-91-45-00652-8
978-2526831832
978-8370591939
978-022-18967-4-3
978-86340-22-25-4
978-862-57-6642-6
978-1691783731

result:

ok 10 lines

Test #8:

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

input:

10
5-401032021
5240-54-427-1
9-180-978371
931-918-0741
4696037371
4087-1938-6-1
87-000442-6-1
6917-1319-11
1-765295351
5031540591

output:

978-5-401032027
978-5240-54-427-9
978-9-180-978378
978-931-918-0740
978-4696037373
978-4087-1938-6-2
978-87-000442-6-5
978-6917-1319-14
978-1-765295351
978-5031540596

result:

ok 10 lines

Test #9:

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

input:

10
3-457991-81-2
39984-91252
423300-4-932
3275898582
9366799-442
0557387302
45-91615812
251-19985-7-2
6055184192
81622230-0-2

output:

978-3-457991-81-7
978-39984-91258
978-423300-4-936
978-3275898589
978-9366799-445
978-0557387304
978-45-91615812
978-251-19985-7-1
978-6055184193
978-81622230-0-0

result:

ok 10 lines

Test #10:

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

input:

10
7876-3592-1-3
79129531-83
9-109-06704-3
82865161-33
2-9-35967283
49919695-73
7576775513
3-843660123
004739-25-33
509-758-044-3

output:

978-7876-3592-1-0
978-79129531-81
978-9-109-06704-6
978-82865161-32
978-2-9-35967283
978-49919695-77
978-7576775518
978-3-843660129
978-004739-25-35
978-509-758-044-4

result:

ok 10 lines

Test #11:

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

input:

10
27-6658-1154
457995-2774
0-878349-634
8230808074
663-1-368014
9439-7026-6-4
365-0-59504-4
0158386574
902-1-41617-4
8573813814

output:

978-27-6658-1153
978-457995-2779
978-0-878349-630
978-8230808078
978-663-1-368016
978-9439-7026-6-2
978-365-0-59504-1
978-0158386577
978-902-1-41617-5
978-8573813814

result:

ok 10 lines

Test #12:

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

input:

10
800-978040-5
4855-4-6463-5
61561839-65
9830-08479-5
2859817395
00324136-45
0985-8-6474-5
6624604875
0-83181632-5
32786193-15

output:

978-800-978040-6
978-4855-4-6463-7
978-61561839-65
978-9830-08479-4
978-2859817398
978-00324136-41
978-0985-8-6474-3
978-6624604879
978-0-83181632-2
978-32786193-10

result:

ok 10 lines

Test #13:

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

input:

10
248-746984-6
50-140-8997-6
96-8-622617-6
58-213-48056
03497-12-026
3712-885946
319-8564-506
2-3-62643476
756359-764-6
582-97771-2-6

output:

978-248-746984-6
978-50-140-8997-5
978-96-8-622617-1
978-58-213-48050
978-03497-12-024
978-3712-885943
978-319-8564-509
978-2-3-62643477
978-756359-764-2
978-582-97771-2-8

result:

ok 10 lines

Test #14:

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

input:

10
9703497217
3414631237
559383597-7
4545227287
72344-0-2667
741-7414567
91752-4984-7
0545975867
1-817640097
4073-3-5268-7

output:

978-9703497218
978-3414631237
978-559383597-0
978-4545227283
978-72344-0-2664
978-741-7414569
978-91752-4984-1
978-0545975865
978-1-817640092
978-4073-3-5268-6

result:

ok 10 lines

Test #15:

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

input:

10
30-6751714-8
720022041-8
8122-182-348
45-98765-20-8
387750-0048
51371-962-58
0-547777-418
2248735448
78-89-298978
6-16533168-8

output:

978-30-6751714-8
978-720022041-4
978-8122-182-347
978-45-98765-20-6
978-387750-0040
978-51371-962-53
978-0-547777-412
978-2248735449
978-78-89-298971
978-6-16533168-5

result:

ok 10 lines

Test #16:

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

input:

10
3863994019
1-883158419
40-88994949
56-6-201673-9
6-694343-779
52745031-79
0-243850-99-9
78-31645799
0677183259
2874-587109

output:

978-3863994013
978-1-883158415
978-40-88994949
978-56-6-201673-6
978-6-694343-777
978-52745031-74
978-0-243850-99-0
978-78-31645792
978-0677183251
978-2874-587108

result:

ok 10 lines

Test #17:

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

input:

10
407303295X
9-475-98657-X
827-522618-X
280455564X
1975-7120-3X
758-256152-X
090330614X
271696-6-63X
534942744X
53628-6680X

output:

978-4073032953
978-9-475-98657-6
978-827-522618-9
978-2804555641
978-1975-7120-37
978-758-256152-5
978-0903306140
978-271696-6-634
978-5349427442
978-53628-66808

result:

ok 10 lines