#Q0301. 炼石计划NOIP模拟赛第3套题目T1 打表

炼石计划NOIP模拟赛第3套题目T1 打表

T1 打表

题目信息

时间限制: 1s

空间限制: 1024M

输入文件: dabiao.in

输出文件: dabiao.in

题目描述

质数似乎有着自己的聚集方式。我们考虑一个集合 PP,其中包含所有的质数。我们可以利用集合 PP 来构建无限多个序列 TT,这些序列 TT 需要满足以下条件:

  1. 序列 TT 每一项都是集合 PP 中的元素。
  2. 假设序列 TT 包含 nn 项,那么必须满足 T1<=T2<=T3<=...<=TnT_1 <= T_2 <= T_3 <= ... <= T_n,也就是说序列 TT 的元素必须按升序排列。

现在,我们要对所有这些序列 TT 进行排序,排序规则如下:

  1. 首先,按照序列 TT 中元素的总和进行比较,总和小的靠前。
  2. 如果两个序列 TT 的元素总和相等,那么再比较序列 TT 的项数,项数少的靠前。
  3. 如果仍然相等,那么按照字典序进行比较,字典序小的靠前。

例如,将前 55 小的序列 TT,排序后存入 C++ 的 vector<vector<int>>ans 中,那么结果如下:

vector<vector<int>>ans={{2},{3},{2,2},{5},{2,3}};

现在,我们需要你将前 1010010^{100} 小的序列 TT 排序后存储在 ans 中,请输出打表代码中的第 ll 到第 rr 个字符。

输入格式

一行,两个正整数 l,rl, r

输出格式

一行,rl+1r − l + 1 个字符,代表第 llrr 个字符的内容。

样例

样例输入 1

1 135

样例输出 1

vector<vector<int>>ans={{2},{3},{2,2},{5},{2,3},{3,3},{2,2,2},{7},{2,5},{2,2,3},{3,5},{2,3,3},{2,2,2,2},{2,7},{2,2,5},{3,3,3},{2,2,2,3}

样例输入 2

1000000000000000 1000000000000030

样例输出 2

1,31,43,67},{2,2,2,2,2,3,3,3,3,

数据范围与提示

数据规模与约定:

对于第一个测试点,r100,rl+1100r\leq 100, r-l+1\leq100

对于第二、三个测试点,r105,rl+1105r\leq 10^5, r-l+1\leq10^5

对于第四、五个测试点,r107,rl+1107r\leq 10^7, r-l+1\leq10^7

对于第六、七个测试点,r1018,rl+11000r\leq 10^{18}, r-l+1\leq1000

对于第八、九、十个测试点,r1018,rl+1107r\leq 10^{18}, r-l+1\leq10^7

对于所有测试点,1lr1018,rl+11071\leq l\leq r\leq 10^{18}, r-l+1\leq 10^7