AdditionalFile5563.zip
#5563. 「POI2026 R1」Wyrażenie arytmetyczne
标签: 传统 | 时间限制: 11000 ms | 内存限制: 128 MiB |
题目描述
题目译自 XXXIII Olimpiada Informatyczna – I etap Wyrażenie arytmetyczne
Bajtek 喜欢在空闲时间解算术谜题。这类谜题通常都差不多:给定参数 a,b,c 和一个数字 n,需要构造一个算术表达式,使其计算结果等于 n,且成本最小。
算术表达式的定义如下(递归定义):
例如:((1+1)×(1+1))×(1+1) 是一个合法表达式,成本为 6a+3b+2c,计算结果为 8。
Bajtek 想知道,对于从 1 到 n 的每一个整数,最小的表达式成本分别是多少。请你帮助他计算这些最小成本。
输入格式
仅一行四个整数 n,a,b,c (1≤n≤3000, 1≤a,b,c≤109)。
输出格式
仅一行输出 n 个整数,用单个空格分隔,第 i 个数表示计算结果为 i 的算术表达式的最小成本。
样例
输入
6 1 4 2
输出
1 6 11 14 19 19
下表展示了计算到各数字的最优表达式及其成本。
| 数字 |
表达式 |
成本计算 |
| 1 |
1 |
a=1 |
| 2 |
(1+1) |
2a+b=2+4=6 |
| 3 |
((1+1)+1) |
3a+2b=3+8=11 |
| 4 |
((1+1)×(1+1)) |
4a+2b+c=4+8+2=14 |
| 5 |
(((1+1)×(1+1))+1) |
5a+3b+c=5+12+2=19 |
| 6 |
(((1+1)+1)×(1+1)) |
5a+3b+c=5+12+2=19 |
附加样例
- n=9, a=2, b=3, c=1
- n=200, a=1, b=2, c=3
- n=2500, a=1, b=1, c=1
- n=3000, a=b=c=109
数据范围与提示
详细子任务附加限制及分值如下表所示:
| 子任务 |
附加限制 |
分值 |
| 1 |
n≤10 |
13 |
| 2 |
n≤200 |
31 |
| 3 |
a=b=c=1 |
13 |
| 4 |
无附加限制 |
43 |