50096. Hamming Distance

難度:3.8/5

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
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

typedef union{
uint64_t code;
uint8_t c[8];
} helper;

int n, m, p;
helper valid_code[4];
uint8_t text[256];
uint8_t* code_arr;

static inline void print_bin(uint8_t n){
for(int i = 7; i >= 0; i--){
printf("%d", (n >> i) & 1);
}
}

static inline void get_valid_code(){
for(int i = 0; i < m; i++){
uint64_t t;
scanf("%llu", &(valid_code[i].code));

for(int j = 0; j < 4; j++){
uint8_t temp = valid_code[i].c[j];
valid_code[i].c[j] = valid_code[i].c[7 - j];
valid_code[i].c[7 - j] = temp;
}
}
code_arr = valid_code[0].c;
}

static inline int check_exact(uint8_t message){
for(int i = 0; i < n; i++){
if(message == code_arr[i]) return 1;
}
return 0;
}

static inline void solve(uint8_t message){
if(check_exact(message)){
printf("%hhu\n", message);
return;
}

for(int i = 7; i >= 0; i--){
int now_message = message ^ (1 << i);
if(check_exact(now_message)){
printf("%hhu\n", now_message);
return;
}
}

}

int main(){
scanf("%d %d %d", &n, &m, &p);
get_valid_code();

for(int i = 0; i < p; i++){
uint8_t message;
scanf("%hhu", &message);
solve(message);
}
}


50096. Hamming Distance
https://aaronlin1229.github.io/judgegirl_50096/
Author
Akizumi
Posted on
July 17, 2023
Licensed under