#P15591. [ICPC 2020 Jakarta R] Moon and Sun

[ICPC 2020 Jakarta R] Moon and Sun

题目描述

设 SS 是一个非空整数序列,KK 是一个正整数。函数 moon()moon() 和 sun()sun() 定义如下:

$$moon(S_{1..|S|}) = \begin{cases} S & \text{if } |S| = 1 \\ [S_2 - S_1, S_3 - S_2, \dots, S_{|S|} - S_{|S|-1}] & \text{if } |S| > 1 \end{cases}$$$$sun(S_{1..|S|}, K) = \begin{cases} S & \text{if } K = 1 \\ sun(moon(S_{1..|S|}), K - 1) & \text{if } K > 1 \end{cases}$$

例如,

  • moon([2,7])=[5]moon([2, 7]) = [5]。
  • moon([4,1,0,7,2])=[−3,−1,7,−5]moon([4, 1, 0, 7, 2]) = [-3, -1, 7, -5]。
  • $sun([4, 1, 0, 7, 2], 5) = sun([-3, -1, 7, -5], 4) = sun([2, 8, -12], 3) = sun([6, -20], 2) = sun([-26], 1) = [-26]$。

注意,sun(S1..∣S∣,∣S∣)sun(S_{1..|S|}, |S|) 总是得到一个只有一个元素的序列。

给定一个包含 NN 个整数的序列 A1..NA_{1..N}。称下标 i=[1..N]i = [1..N] 是 热 的,当且仅当存在一个序列 A1..N′A'_{1..N} 满足以下条件:

  • Ai′≠AiA'_i \ne A_i,且 Ai′A'_i 是 [−100 000,100 000][-100\,000, 100\,000] 内的整数;
  • 对于所有 j≠ij \ne i,有 Aj′=AjA'_j = A_j;
  • sun(A1..N′,N)sun(A'_{1..N}, N) 的唯一元素是 235 813235\,813 的倍数。

你的任务是计算给定 A1..NA_{1..N} 中热下标的个数。

例如,在 A1..5=[4,1,0,7,2]A_{1..5} = [4, 1, 0, 7, 2] 中有 33 个热下标,即 {1,3,5}\{1, 3, 5\}。

  • i=1i = 1,A1′=30A'_1 = 30 → A1..5′=[30,1,0,7,2]A'_{1..5} = [30, 1, 0, 7, 2] → sun([30,1,0,7,2],5)=[0]sun([30, 1, 0, 7, 2], 5) = [0]
  • i=3i = 3,A1′=−78 600A'_1 = -78\,600 → A1..5′=[4,1,−78 600,7,2]A'_{1..5} = [4, 1, -78\,600, 7, 2] → sun([4,1,−78 600,7,2],5)=[−471 626]sun([4, 1, -78\,600, 7, 2], 5) = [-471\,626]
  • i=5i = 5,A1′=28A'_1 = 28 → A1..5′=[4,1,0,7,28]A'_{1..5} = [4, 1, 0, 7, 28] → sun([4,1,0,7,28],5)=[0]sun([4, 1, 0, 7, 28], 5) = [0]

注意,00 和 −471 626-471\,626 都是 235 813235\,813 的倍数。另一方面,下标 i=2i = 2 不是热的,因为不存在满足条件的整数 A2′≠A2A'_2 \ne A_2 在 [−100 000,100 000][-100\,000, 100\,000] 内,使得 sun(A1..5′,5)sun(A'_{1..5}, 5) 的唯一元素是 235 813235\,813 的倍数。下标 i=4i = 4 同样不是热的。

输入格式

输入第一行包含一个整数 NN(1≤N≤100 0001 \leq N \leq 100\,000),表示序列 AA 中整数的个数。下一行包含 NN 个整数 AiA_i(−100 000≤Ai≤100 000-100\,000 \leq A_i \leq 100\,000),表示整数序列。

输出格式

输出一行一个整数,表示给定 A1..NA_{1..N} 中热下标的个数。

5
4 1 0 7 2
3
4
10 20 30 -40
4
2
100 100
0

提示

样例 #1 解释

这是题目描述中的例子。

样例 #2 解释

  • i=1i = 1,A1′=−70A'_1 = -70 → A1..4′=[−70,20,30,−40]A'_{1..4} = [-70, 20, 30, -40] → sun([−70,20,30,−40],4)=[0]sun([-70, 20, 30, -40], 4) = [0]
  • i=2i = 2,A2′=78 651A'_2 = 78\,651 → A1..4′=[10,78 651,30,−40]A'_{1..4} = [10, 78\,651, 30, -40] → sun([10,78 651,30,−40],4)=[235 813]sun([10, 78\,651, 30, -40], 4) = [235\,813]
  • i=3i = 3,A3′=−78 601A'_3 = -78\,601 → A1..4′=[10,20,−78 601,−40]A'_{1..4} = [10, 20, -78\,601, -40] → sun([10,20,−78 601,−40],4)=[235 813]sun([10, 20, -78\,601, -40], 4) = [235\,813]
  • i=4i = 4,A4′=40A'_4 = 40 → A1..4′=[10,20,30,40]A'_{1..4} = [10, 20, 30, 40] → sun([10,20,30,40],4)=[0]sun([10, 20, 30, 40], 4) = [0]

翻译由 DeepSeek 完成