记录编号 274339 评测结果 AAAAAAAAAA
题目名称 [NOIP 1995]A类B类数 最终得分 100
用户昵称 Gravatarsxysxy 是否通过 通过
代码语言 C++ 运行时间 0.308 s
提交时间 2016-06-27 23:57:12 内存使用 0.29 MiB
显示代码纯文本
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>

/*
 0000   0001   0010    0011    0100    0101     0110     0111 
 1000   1001   1010    1011    1100    1101     1110     1111
*/

const int c1[] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4};
const int c0[] = {4, 3, 3, 2, 3, 2, 2, 1, 3, 2, 2, 1, 2, 1, 1, 0};

/*
 0       1      10      11      100     101      110     111 
 1000   1001   1010    1011    1100    1101     1110     1111
*/
 
const int c11[] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4};
const int c00[] = {1, 0, 1, 0, 2, 1, 1, 0, 3, 2, 2, 1, 2, 1, 1, 0};


int main()
{
	freopen("abnum.in", "r", stdin);
	freopen("abnum.out", "w", stdout);
	int n;
	scanf("%d1", &n);
	int ca = 0, cb = 0;
	for(int i = 1; i <= n; i++)
	{
		int k = i;
		int a = 0, b = 0;
		while(k)
		{
			int t = k & 15;
			if(k > 15)
			{
				a += c1[t];
				b += c0[t];
				k >>= 4;
			}else
			{
				a += c11[t];
				b += c00[t];
				break;
			}
		}
		if(a > b)ca++;
		else cb++;
	}
	printf("%d %d\n", ca, cb);
	return 0;
}