描述
有2000001块石头放在一条数线上。这些石子的坐标是 −1000000,−999999,−999998,…,999999,1000000。
其中一些连续的 K 个石子被涂成黑色,其他的被涂成白色。
此外,我们还知道位于坐标 X 的石子被涂成了黑色。
按升序打印所有可能包含被涂成黑色的石子的坐标。
输入描述
K X
输出描述
按升序打印所有可能包含涂黑石块的坐标,中间留空格。
用例输入 1
3 7
用例输出 1
5 6 7 8 9
用例输入 2
4 0
用例输出 2
-3 -2 -1 0 1 2 3
用例输入 3
1 100
用例输出 3
100
提示
样本输出 1
我们知道有三块涂成黑色的石头,坐标 7 处的石头被涂成黑色。有三种可能的情况:
- 三块涂黑的石头分别位于坐标 5、6 和 7。
- 三颗涂黑的棋子分别放置在坐标6、7和8处。
- 三块涂黑的棋子分别放置在坐标7、8和9处。
因此,5、6、7、8和9这五个坐标可能包含一块涂黑的棋子。
输出示例 2
负坐标也可以包含一块涂成黑色的石头。
限制因素
- 1≤K≤100
- 0≤X≤100
- 所有输入值均为整数。
代码:
#include<bits/stdc++.h> // 包含几乎所有标准库的头文件,便于编程,但并非最佳实践,特别是用于竞赛或生产环境。
using namespace std; // 使用标准命名空间,避免后续代码中反复使用std::前缀。 int n, x; // 定义两个整型变量n和x,分别用于存储黑色石子的数量和黑色石子坐标X。 int main() // 主函数入口
{ cin >> n >> x; // 从标准输入读取n和x的值。 for(int i = x - n + 1; i <= x + n - 1; i++) // 遍历可能的黑色石子坐标范围。 cout << i << " "; // 输出当前遍历到的坐标。 return 0; // 主函数正常结束,返回0。
}
解析:
-
#include<bits/stdc++.h>
:这行代码包含了C++标准库中的大部分头文件,使得我们可以使用各种标准库中的函数和类。然而,这并非最佳实践,特别是在大型项目或比赛中,因为它会增加编译时间,并且可能包含不必要的头文件。通常,我们会根据需要包含特定的头文件。 -
using namespace std;
:这行代码使得我们可以直接使用标准库中的函数和对象,而不需要加上std::
前缀。这可以简化代码,但也可能导致命名冲突,特别是当使用多个命名空间时。 -
int n, x;
:定义了两个整型变量n
和x
,用于存储用户输入的值。 -
int main()
:主函数入口。 -
cin >> n >> x;
:从标准输入读取两个整数,分别赋值给变量n
和x
。 -
for(int i = x - n + 1; i <= x + n - 1; i++)
:这是一个for循环,用于遍历所有可能的黑色石子坐标。循环变量i
从x - n + 1
开始,到x + n - 1
结束。这是因为已知x
是一个黑色石子的坐标,而我们需要找到所有可能的连续n
个黑色石子的坐标范围。 -
cout << i << " ";
:在循环体内,打印当前遍历到的坐标i
,并在每个坐标后面加上一个空格。 -
return 0;
:主函数正常结束,返回0。