第一行一个正整数T,表示数据组数。 接下来T行,每行一个正整数n。 T<=20,n<=2015000000。
Output对于每组数据,输出一行f(n)。
Sample Input2 1 20150001Sample Output
2015 20152014
由表达式分析:f(20150005)=f(f(20150005-2015))=f(20150005-2015+2014)=f(20150005-1)
及f(n)=n+2014 (n<20150001)
f(n)=f(n-1) (n>=20150001) ----> 继续化简得f(n)=f(20150000)=20152014 (n>=20150001)
#include <iostream>
#include <stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
if(n>=20150001) printf("20152014\n");
else printf("%d\n",n+2014);
}
}

本文介绍了一种求解特定函数f(n)的算法实现,该函数针对不同范围的n值有不同的定义方式。当n小于20150001时,f(n)=n+2014;当n大于等于20150001时,f(n)为递归形式且结果恒等于20152014。
3336

被折叠的 条评论
为什么被折叠?



