当前位置: 首页 > news >正文

算法分析与设计课堂实验(5 分支策略3

问题描述】

在Fibonacci数列中,

。例如,Fibonacci数列的前十项是:

0,1,1,2,3,5,8,13,21,34,…

Fibonacci序列的另一个公式是

给定一个整数

,请你计算

在10进制表示下的最后四位。

【输入形式】

输入将包含一个测试用例。每个测试用例仅有一行,包含一个整数

(其中

)。

【输出形式】

对于每个测试用例,输出

的最后四位数字。如果

的最后四位都是零,则输出

;否则,省略任何前导零(即,输出

)。

【样例输入】

0
【样例输出】

0
样例输入】

9
【样例输出】

34

#include <iostream>
#include <string>
using namespace std;
 
const int MOD = 10000;
 
pair<int, int> fast_doubling(int n) {
    if (n == 0) {
        return {0, 1};
    }
    auto [a, b] = fast_doubling(n >> 1);
    int c = (a * (( (2 * b - a) % MOD + MOD ) % MOD )) % MOD;
    int d = ( (a * a % MOD) + (b * b % MOD) ) % MOD;
    if (n & 1) {
        return {d % MOD, (c + d) % MOD};
    } else {
        return {c % MOD, d % MOD};
    }
}
 
int main() {
    int n;
    cin >> n;
    if (n == 0) {
        cout << 0 << endl;
        return 0;
    }
    auto [fib_n, fib_n1] = fast_doubling(n);
    int res = fib_n;
    char buffer[5];
    sprintf(buffer, "%04d", res);
    string s(buffer);
    size_t start = s.find_first_not_of('0');
    if (start == string::npos) {
        cout << 0 << endl;
    } else {
        cout << s.substr(start) << endl;
    }
    return 0;
}

http://www.dtcms.com/a/92781.html

相关文章:

  • STM32 MODBUS-RTU主从站库移植
  • 【Linux】——进程(下)
  • 【商城实战(65)】退换货流程全解析:从前端到后端的技术实现
  • HTML5 SVG:图形绘制的现代标准
  • STL之string
  • Qt的文件操作
  • Linux <(...) 进程替换
  • 【STM32】编写程序控制开发板的RGB LED灯
  • STM32单片机uCOS-Ⅲ系统12 CPU利用率与堆栈检测
  • [plugin:vite:import-analysis] Cannot find module ‘vuex\dist\vuex.esm-bundler
  • 风光互补智慧路灯的灯杆设计有哪些要求?
  • 服务器数据恢复—Raid5热备盘同步中断的数据恢复案例
  • WinSCP使用教程:(SFTP、SCP、FTP 和 WebDAV)
  • CES Asia 2025:科技企业出海的领航灯塔
  • 如何使用VS中的Android Game Development Extension (AGDE) 来查看安卓 Logcat 日志
  • 数据库 第一章 MySql基础(2)
  • STL之map和set
  • Altium Designer——PCB设计(走线与布局前的准备)
  • WebWorkers在项目中的使用案例
  • 状态模式(State Pattern)
  • 识货APP sh-sign sh-ba sh-jt 分析
  • qt QQuaternion详解
  • Arduino、ESP32驱动GUVA-S12SD UV紫外线传感器(光照传感器篇)
  • 2025-03-26 学习记录--C/C++-PTA 6-2 顺序表操作集
  • SSML(Speech Synthesis Markup Language)简介
  • 视频前后景分离
  • 003仿射和欧式几何
  • (Windows系统)为matplotlib设置中英组合字体:中文宋体+英文Times New Roman
  • PHP中yield关键字的使用
  • 浏览器渲染原理与优化详解