1 条题解
-
0
虽然只有一种味道,但真的很 鲜~
葵花籽味
#include <cmath> //abs #include <cstdio> //scanf, printf #include <string> //string #include <iostream> //cin #include <algorithm> //sort using namespace std; int mp[25][25], choose[25]; //choose:找出的16个数字 class cnter { public: int num, cnt; //还要知道是什么数字,排序之后才不会乱 } cnt[260]; int main() { int n; scanf("%d", &n); int m; for(int i=1;i<=n;i++) { string str; cin >> str; m = str.size()/2; for(int j=1;j<=m;j++) { char c1 = str[j*2-2], c2 = str[j*2-1]; int a1, a2; if(c1 >= '0' && c1 <= '9') a1 = c1 - '0'; else a1 = c1 - 'A' + 10; if(c2 >= '0' && c2 <= '9') a2 = c2 - '0'; else a2 = c2 - 'A' + 10; mp[i][j] = a1*16+a2; //16 to 10 cnt[mp[i][j]].cnt++; //计数++ cnt[mp[i][j]].num = mp[i][j]; //设置数字 } } sort(cnt, cnt + 256, [](cnter x, cnter y) { return x.cnt > y.cnt || x.cnt == y.cnt && x.num < y.num; }); //排序 for(int i=0;i<16;i++) { choose[i] = cnt[i].num; int a = choose[i]/16, b = choose[i]%16; printf("%c%c", (a <= 9)?(a + '0'):(a + 'A' - 10), (b <= 9)?(b + '0'):(b + 'A' - 10)); //10 to 16 //printf(":%d\n", cnt[i].cnt); //debug语句 } putchar('\n'); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { int num = mp[i][j]; int minn = 2147483647, mink; for(int k=0;k<16;k++) { if(abs(num - choose[k]) < minn) { minn = abs(num - choose[k]); mink = k; } } putchar(mink <= 9 ? mink+'0' : (mink + 'A' - 10)); //10 to 16 } puts(""); } return 0; }
- 1
信息
- ID
- 3450
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 7
- 已通过
- 3
- 上传者