前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1453: [蓝桥杯2019初赛]数列求值

1453: [蓝桥杯2019初赛]数列求值

作者头像
可爱见见
发布2020-02-25 18:58:10
7930
发布2020-02-25 18:58:10
举报
文章被收录于专栏:卡尼慕卡尼慕

题目

给定数列1, 1, 1, 3, 5, 9, 17, …,从第4 项开始,每项都是前3 项的和。求第20190324 项的最后4 位数字。

思路

很容易就想到使用递归,跟斐波那契很像,就是递推式变了,但这里很显然会爆栈,因此不能使用递归。还有一个陷阱就是直接算到第20190324项是一定会溢出的,因此根据题意只需要保存后四位,即对大于10000的项对10000求余即可。

代码

代码语言:javascript
复制
#include <iostream>
using namespace std;

int solve(int n) {
    if (n <= 3) {
        return 1;
    }
    int a = 1, b = 1, c = 1, res;
    for (int i = 4; i <= n; i++) {
         // 这里要记得取余
        res = (a + b + c) % 10000;
        //往后移动一位 
        a = b;
        b = c;
        c = res;
    }
    return res;
}

int main() {
    int n = solve(20190324);
    cout<<n<<endl;
    return 0;
}

/2222/2222/2222/2222vv/2222/2222/2222/2222vv/2222/222vv/2222/2222/2222/2222vv

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卡尼慕 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档