首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

nkpc1 Lucy的难点

2012-11-03 
nkpc1 Lucy的难题对给定的f(n) 当 n50025002 的时候,f(n)n-5;当 n50025002 的时候,f(n)f(f(n2005))

nkpc1 Lucy的难题

对给定的f(n) 当 n>=50025002 的时候,f(n)=n-5;当 n<50025002 的时候,f(n)=f(f(n+2005)) 给定n,求出发f(n)

如果使用递归,则会栈溢出!!!

可以递归化循环:

用m表示f的层数,f(m,n)表示参数n嵌套了m层f,例如
f(3,n)=f(f(f(n)))
f(1,n)=f(n)
f(0,n)=n

//当 n>=50025002 的时候,f(n)=n-5;当 n<50025002 的时候,f(n)=f(f(n+2005))#include <iostream>#include <cstdio>using namespace std;int main(){int n,m;while(scanf("%d",&n)==1){m=1;while(m>0){if(n>=50025002){ n=n-5;m--; }else {n+=2005; m++;  }}printf("%d\n",n);}return 0;}


热点排行