题目大意
有公式如下:
f ( i ) = { f ( f ( x + 11 ) ) ( x < = 100 ) x − 10 ( x > 100 ) f(i) =\left\{\begin{matrix} & f(f(x+11)) & (x<=100) \\ &x-10 & (x>100) \end{matrix}\right. f(i)={
f(f(x+11))x−10(x<=100)(x>100)
读入一个 n n n ,要你求 f ( n ) f(n) f(n).
其中 n < = 1 0 6 n<=10^6 n<=106.
解
预处理,然后倒着递推即可。
代码
#include<cstdio>
int n,ans,ud,f[120];
int main(){
for(int i = 101; i <= 112; ++i)
f[i] = i - 10;
for(int i = 100; i >= 0; --i)
f[i] = f[f[i+11]];
scanf("%d", &n);
while(n > 0){
if(n > 100) printf("%d\n",n-10);
else printf("%d\n",f[n]);
scanf("%d", &n);
}
}