题目大意:
给出一个函数:
(f(x)=left{egin{matrix}f(f(x+11))&quad(xleq 100)\ x-10&quad(x> 100) end{matrix} ight.)
求 (f(n))。
正文:
从 (n) 的上限开始倒着往前求就行了。但是你会发现其实只要 (xleq101),答案就是 (91),所以可以达到 (O(1)) 的。
代码:
(O(n)):
for (int i = 101; i <= N - 10; i++)
f[i] = i - 10;
for (int i = 100; i >= 1; i--)
f[i] = f[f[i + 11]];
(O(1)):
printf ("%d
", (n <= 101)? 91: (n - 10));