题目描述
小W在计算一个数列{An},其中A1=1,A2=2,An+2=An+1+An。尽管他计算非常精准,但很快他就弄混了自己的草稿纸,他找出了一些他计算的结果,但他忘记了这些都是数列中的第几项。
输入描述:
每行包括数列中的一项Ak(k<=100000)。
总行数T<=30。
输出描述:
对于每一项Ak,输出一行包括一个正整数k表示输入中数是数列的第几项。
输入
2 3 5 8 13
输出
2 3 4 5 6
#include <bits/stdc++.h> using namespace std; const int P = 1000000000; const int N = 100000; int x, n, a[N+5], ans; char str[N+5]; int main() { a[1] = 1; a[2] = 2; for (int i = 3; i <= N; ++i) { a[i] = (a[i-1]+a[i-2])%P; } while (~scanf("%s",str)) { int len=strlen(str); if (len<10) sscanf(str, "%d", &n); else sscanf(str+(len-9), "%d", &n); for (int i=1;i<= N;++i) { if(a[i]==n) { printf("%d ", i); break; } } } return 0; }
2018-02-03 mod然后就能看出来了