【递推】求 f 函数

题目大意

有公式如下:
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))x10(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);
	}
} 

猜你喜欢

转载自blog.csdn.net/qq_42937087/article/details/111742248
今日推荐