uvaLive7361-Immortal Porpoises-斐波那契

来源:互联网 发布:类似精易编程助手 编辑:程序博客网 时间:2024/06/05 21:51

题意:求大数所对应的斐波那契数

思路:用map递推求即可,求法看代码。

代码:

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int mod = 1e9;map<ll,ll> mp;ll solve(ll n){    if (mp.count(n)) return mp[n];    ll tmp = n / 2;     //注意要返回    if (n % 2 == 0)  return mp[n] = (solve(tmp)*solve(tmp) + solve(tmp-1)*solve(tmp-1)) % mod;     else  return mp[n] = (solve(tmp)*solve(tmp + 1) + solve(tmp)*solve(tmp - 1)) %mod;}int main(){    int p, k;    scanf("%lld", &p);    mp[0] = 1;    mp[1] = 1;    while (p--) {        ll n;        scanf("%d%lld", &k, &n);        printf("%d %lld\n", k, solve(n-1));    }    return 0;}


0 0
原创粉丝点击