ABC 251 | D - At Most 3 (Contestant ver.)
题目描述
给定一个数\(W\),你需要准备一批砝码以满足以下条件:
- 砝码的数量在\(1 \sim 300\)之间(包括\(1\)和\(300\)).
- 每个砝码的重量不超过\(10^6\)
- 可以用至多\(3\)个不同砝码表示\(1 \sim W\)之间的每一个数(包括\(1\)和\(W\)).
数据范围
\(1 \le W \le 10^6\)
题目解析
对于任意一个十进制六位数\(\overline{abcdef}\),可作如下拆解:
\[\begin{align*}
\overline{abcdef} = \overline{ab0000} + \overline{cd00} + \overline{ef}
\end{align*}
\]
这样一个\(10^6\)范围内的数可被拆解为三个\(10^6\)范围内的数的和,砝码数量为\(298\)个.
对于所有样例,输出这一组答案即可。
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e6;
int main()
{
printf("%d\n", 298);
for(int i = 1; i < 100; i ++) printf("%d ", i);
for(int i = 100; i < 10000; i += 100) printf("%d ", i);
for(int i = 10000; i <= 1000000; i += 10000) printf("%d ", i);
return 0;
}

浙公网安备 33010602011771号