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;
}

  

posted @ 2011-08-29 22:19  zqynux  阅读(884)  评论(0编辑  收藏  举报