很长时间以来,您一直在从Advanced Collecting Device Controller™收集数据。您检查了日志,并惊恐地发现出了什么问题:数据只包含数字的最后几位!
幸运的是,您知道初始值,并且该值永远不会快速变化。这意味着您可以通过查找起点之间的距离来恢复其余部分。
挑战
您将编写一个程序或函数来计算值的变化量,给定一个模数N和一系列中间值modulo N。
每对数字之间的变化始终小于N/2,因此每个测试用例只有一个有效答案。
将以N您选择的格式为您提供输入> 2 的整数和值列表作为输入。输入可以通过STDIN或命令行或函数自变量给出。
您将输出一个整数,原始值已更改的数量。输出可以打印到STDOUT或返回。
规则
- 您的程序必须能以小于的距离和模数工作
2^20。 - 您可以假设:
N至少是3。- 该列表至少包含2个值。
- 列表中的所有值都至少为0且小于
N。 - 数字中的所有变化均小于
N/2。
- 其他都是无效的输入,您的程序可能会做任何想做的事情。
- 禁止为此目的而使用标准漏洞,任何非标准库和内置函数。
- 这是代码高尔夫球,因此以字节为单位的最短程序获胜。
示例测试用例
输入:
3
0 1 2 2 0 1 0 2 1 2 0 1 2 1 1
输出:
4
说明(带有示例值):
Value mod 3: 0 1 2 2 0 1 0 2 1 2 0 1 2 1 1
Value: 0 1 2 2 3 4 3 2 1 2 3 4 5 4 4
输入:
10
5 2 8 9 5
输出:
-10
说明(带有示例值):
Value mod 10: 5 2 8 9 5
Value: 15 12 8 9 5
输入无效:
2
0 0 0 0 0
(模数太小)
6
2 5 4 2
(2到5之间的变化太大)
:^;[5 2 8 9 5](\吗?