的功能被说成具有一个长度的周期n如果存在一个X在其结构域,使得˚F Ñ(X)= X和˚F 米(X)≠X为0 <M <N ,其中,上标Ñ表示ñ - f的折叠应用。请注意,长度为1的循环是不动点f(x)= x。
您的任务是实现从整数到其自身的双射函数,该函数正好具有每个正长度n的一个周期。双射函数是一对一的对应关系,即每个整数都恰好映射到一次。具有一个长度为n的正好一个周期意味着正好有n个不同的数字x,对于0 <m <n,f n(x)= x且f m(x)≠x。
这是x = 0周围的此类函数的示例:
x ... -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 ...
f(x) ... 2 4 6 -3 -1 1 -4 0 -2 5 7 -7 -6 3 -5 ...
该摘录包含长度为1到5的循环:
n cycle
1 0
2 -2 1
3 -4 -3 -1
4 -5 6 3 7
5 -7 2 5 -6 4
...
请注意,以上我仅在数学意义上使用“函数”。您可以使用选择的语言编写函数或完整程序,只要它以单个(带符号)整数作为输入并返回单个(带符号)整数即可。通常,您可以通过STDIN,命令行参数,函数参数等进行输入,并通过STDOUT,函数返回值或函数(输出)参数等进行输出。
当然,许多语言不(轻松)支持任意精度整数。如果您的实现仅在您语言的本机整数类型的范围内有效,只要该范围至少覆盖[-127,127]范围,并且将语言的整数类型替换为任意整数,该方法就可以对任意整数有效,精度整数。
适用标准代码高尔夫球规则。