记录编号 |
274339 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 1995]A类B类数 |
最终得分 |
100 |
用户昵称 |
sxysxy |
是否通过 |
通过 |
代码语言 |
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;
}