#P14767. [Bulgarian2017冬季赛]CMYK
[Bulgarian2017冬季赛]CMYK
题目描述
你需要为一种专用微控制器 BPWP 编写程序,使其解决如下问题。
给定 8 个彩色球。对于每个球,控制器需要从标准输入依次读入两个整数:
- 该球的重量;
- 该球的颜色编码。
颜色只可能是以下四种:
65535:青色(Cyan)16711935:品红色(Magenta)16776960:黄色(Yellow)0:黑色(Black)
你的 BPWP 程序需要向标准输出依次输出四个整数,每个数单独占一行,分别表示:
- 所有青色球的总重量;
- 所有品红色球的总重量;
- 所有黄色球的总重量;
- 所有黑色球的总重量。
提交方式
这是一道 提交答案题。
你提交的不是 C/C++/Python 程序,而是一个纯文本文件,文件内容本身就是一段 BPWP 程序。
在 Hydro OJ 中提交时,任选一种语言提交该文本文件即可,评测时会把你提交的文件内容当作 BPWP 源程序处理。
BPWP 控制语言
指令格式
每条指令单独占一行。
支持以下 7 种指令:
| 指令 | 含义 |
|---|---|
DEF var |
在控制器内存中定义变量 var,其初值为未定义的任意值 |
GET var |
从标准输入读入一个整数到变量 var |
PUT var |
将变量 var 的值输出到标准输出,并单独占一行 |
ADD var value |
执行 var = var + value |
SUB var value |
执行 var = var - value |
MUL var value |
执行 var = var * value |
DIV var value |
执行整数除法 var = var / value,只保留整数部分 |
其中 value 可以是:
- 一个十进制整数常量;
- 或另一个变量名。
语言规则
- 指令名与变量名均只使用英文字母;
- 变量名只能由英文字母组成;
- 不区分大小写;
- 所有变量均为 32 位有符号整数;
- 指令与参数之间至少用一个空格分隔;
- 整数采用十进制表示,可带前导负号
-; - 允许空行;
- 允许注释:从分号
;到本行末尾的内容均视为注释; - 如果发生 除以 0,或运算结果超出 32 位有符号整数范围,则结果视为未定义。
输入格式(供你的 BPWP 程序读取)
共 16 个整数,表示 8 个球的重量与颜色编码,格式如下:
w1 c1 w2 c2 ... w8 c8
也可能以多行形式给出;你的程序只需要按 GET 的顺序依次读取即可。
输出格式(由你的 BPWP 程序输出)
输出 4 行:
sumCyan
sumMagenta
sumYellow
sumBlack
样例
输入
5 65535
2 65535
3 16711935
3 65535
4 16776960
5 16711935
2 0
6 0
输出
10
8
4
8
评分方式
共有 25 组隐藏测试。每组测试均包含 8 个球。
对于每一组测试:
- 若青色总重量正确,获得该组测试的 30% 分值;
- 若品红色总重量正确,获得该组测试的 30% 分值;
- 若黄色总重量正确,获得该组测试的 20% 分值;
- 若黑色总重量正确,获得该组测试的 20% 分值。
总分为这 25 组测试得分的平均值。
本地调试说明
题包中附有一个 interpretator.cpp,可以在本地把你写的 BPWP 程序作为输入进行解释执行。
调用形式为:
interpretator 程序文件 数据文件
例如:
interpretator sum_5_prg.txt sum_5_data.txt
评测时 不会 使用你提交的 C/C++/Python 代码运行,而只会读取你提交文件中的文本内容,并将其当作 BPWP 源程序评分。