题目背景
原题链接:https://oier.team/problems/88
题目描述
现在有 0∼n 共 n+1 个数。
定义 (x)3 表示十进制数 x 的三进制形式。如果没有特别强调,那么这些数均为十进制形式。
youyou 想构造一个序列长度为 p(p≥1)的非负整数序列 a。使之满足:
- ai∈[0,n]。
- 不存在 i,j(1≤i<j≤p),使得 ai=aj。
- 对于任意 1≤i<n,ai 与 ai+1 至少满足以下四个条件中的一个:
- (ai)3 去掉最后一位,恰好等于 (ai+1)3(若只有一位,则去掉后的数字为 0)。
- 在 (ai)3 末尾添上某一位 t(0≤t≤2),恰好等于 (ai+1)3(若 ai=0,则添加后舍去前置 0)。
- ai≤w, (ai)3 的末尾不是 0,且将末尾的一位数字移到开头与 (ai+1)3 相等。
- 当 (ai)3 长度 ≥2,且 (ai)3 次高位非零时,将 (ai)3 开头的一位数字移到末尾,形成的数的十进制值 ≤w,且恰好等于 (ai+1)3。
这样的序列 a 被称为“完美的”。
youyou 认为,如果十进制三元组 (x,y,z) 是好的,必须满足以下条件:
- 0≤x,y,z≤n,x=y。
- 存在至少一个”完美的“序列 b,使得十进制下有 b1=x,bs=y。其中 s 为序列长度。
- 存在至少一个”完美的”序列 c,使得十进制下有 c1=z。同时,对于上述任意的 b,均有恰好一对 (i,j),满足 1≤i≤∣b∣,1≤j≤∣c∣,使得 bi=cj。
对于每一个 0≤z≤n,求能构成“好的”三元组 (x,y,z) 的有序对 (x,y) 的个数。
输入格式
仅一行,为一个正整数 n 和一个非负整数 w,其含义在题目描述中给出。
输出格式
共 n+1 行,其中第 i+1 行一个数表示当 z=i 时,能构成“好的”三元组 (x,y,z) 的有序对 (x,y) 的个数。
4 3
20
20
20
20
20
提示
【样例解释 #1】
一共有 5 个数,用三进制表示分别为 0,1,2,10,11。
当 z=0,1,2,3,4 时,全部 (x,y)(x=y) 数对均满足题意。
下面给出三元组 (2,3,1) 是“好的”的证明。
当 x=2,y=3,z=1 时,序列 b 可以为 {2,0,1,3}。
其中 b1,b2 满足条件 1,b2,b3 满足条件 2,b3,b4 满足条件 2。
可以证明只有这一个序列 b 满足题意。因此,存在 c={1},使得 B∩C={1}。所以 (2,3,1) 是“好的”三元组。
【样例 #2】
见附件中的 ternary/ternary2.in
与 ternary/ternary2.ans
。
该组样例满足测试点 4∼6 的约束条件。
【样例 #3】
见附件中的 ternary/ternary3.in
与 ternary/ternary3.ans
。
该组样例满足测试点 7∼10 的约束条件。
【样例 #4】
见附件中的 ternary/ternary4.in
与 ternary/ternary4.ans
。
该组样例满足测试点 13∼15 的约束条件。
【样例 #5】
见附件中的 ternary/ternary5.in
与 ternary/ternary5.ans
。
该组样例满足测试点 20∼25 的约束条件。
【数据范围】
本题共 25 个测试点,每个 4 分。
测试点编号 |
n |
w |
特殊性质 |
1∼3 |
≤18 |
无 |
4∼6 |
≤242 |
7∼10 |
≤6560 |
≤6560 |
11∼12 |
≤105 |
≤105 |
13∼15 |
≤3×105 |
有 |
16∼17 |
=0 |
无 |
18∼19 |
=n |
20∼25 |
≤3×105 |
特殊性质:w≥104。
对于全部数据,保证:1≤n≤3×105,0≤w≤n。