题目描述
小明的老师给小明布置了这样一道作业题,一个序列符合以下定义:
现问你这个序列的第n项是多少?
输入
输入包含多组测试数据。每组输入一个整数n(0<=n<=1000000),当输入-1时,输入结束。
输出
对于每组输入,输出第n项的值,结果请mod 1000000。
样例输入 Copy
0 -1
思路:题目已经给思路了,简单的递归而已,但是用函数递归我运行错误,也不是超时,不解。
也做过好多题了,总算是在这道题上回忆起了可以先把结果全部算出来存数组里面,直接根据n的值找数组下标,然后输出相应的值。
#include <stdio.h> #include <iostream> #include <cstring> #include <algorithm> #include <cmath> int main() { int n; int f[1000005]; f[0] = 1; for(int i=1;i<1000005;i++) { f[i]=(f[int(i-sqrt(i))]+f[int(log(i))]+f[int(i*sin(i)*sin(i))])%1000000; } while(1) { scanf("%d",&n); if(n==-1) { break; } printf("%d ",f[n]); } return 0; }