NOIP 1998 进位制 解题报告
纯水题,最上面一行去掉,最下面一行去掉,在剩下的(n - 1) * (n - 1)的矩形里面,长度为一的进制数的出现次数减一就是代表几,比如样例吧:
5 + L K V E L L K V E K K V E KL V V E KL KK E E KL KK KV |
上面,红色的L出现了一次,就代表0,K出现两次就代表1,两位数都不考虑,就这样的:
#include <stdio.h> #include <string.h> #include <stdlib.h> char tmp[1000]; char str[9]; int used[9]; int main(int argc, char **argv) { int i, j, k; int n; char c; scanf("%d\n+", &n); n--; for(i = 0; i < n; i++){ scanf(" %c", &c); str[i] = c; } for(i = 0; i < n; i++){ scanf("\n%c", &c); for(j = 0; j < n; j++){ scanf(" %s", tmp); if(strlen(tmp) == 1){ for(k = 0; k < n; k++){ if(str[k] == tmp[0]){ used[k]++; break; } } } } } for(i = 0; i < n; i++){ printf("%c=%d ", str[i], used[i] - 1); } printf("%d\n", n); return 0; }