#1486. 输出区间3

输出区间3

题目描述

给定一个序列的总长度 nn 以及一个正整数 kk。

请你找出该序列中所有长度恰好为 kk 的倍数(即长度为 k,2k,3k,…k, 2k, 3k, \dots)的连续子区间,并输出它们的左右端点下标。在输出时,必须严格遵守以下规则:

  1. 首先按照子区间的长度从小到大进行输出;
  2. 如果长度相同,则按照子区间的左端点从小到大进行输出。

本题中下标从 11 开始。

输入格式

输入仅包含一行,两个正整数 nn 和 kk,中间用一个空格隔开,分别表示序列的总长度和目标长度的基数。

输出格式

输出若干行,每行包含两个正整数 ll 和 rr,分别表示一个满足条件的子区间的左端点和右端点,中间用一个空格隔开。要求输出顺序严格满足题目描述中的规则。

样例输入 1

4 2

样例输出 1

1 2
2 3
3 4
1 4

样例输入 2

3 1

样例输出 2

1 1
2 2
3 3
1 2
2 3
1 3

说明

样例解释

  • 在第一个样例中,序列总长度为 44。我们需要找出长度为 22 的倍数(即长度为 22 和 44)的所有子区间。
    • 长度为 22 的子区间有:[1,2],[2,3],[3,4][1, 2], [2, 3], [3, 4],按照左端点从小到大输出;
    • 长度为 44 的子区间有:[1,4][1, 4]。 按照规则,先输出长度为 22 的区间,再输出长度为 44 的区间。
  • 在第二个样例中,k=1k=1,即要求输出所有长度为 11 的倍数(也就是所有可能的长度 1,2,31, 2, 3)的子区间。这等价于按长度和左端点顺序输出所有子区间。

数据范围

对于所有测试点,保证 :

  • 1≤n≤5001 \le n \le 500。
  • 1≤k≤n1 \le k \le n。
  • 所有的输入数值均为整数。