博客
关于我
poj2116——模拟
阅读量:654 次
发布时间:2019-03-15

本文共 1726 字,大约阅读时间需要 5 分钟。

斐波那契基数的计算方法涉及到一种新的表示数字的方式,其中每一位的权重是斐波那契数列中的数。这使得在进行算术运算时,尤其是加法运算,需要一个更复杂的过程。以下,我将详细介绍如何处理斐波那契基数的加法运算,并将给出的示例转换为规范形式。

准备阶段

首先,我们需要初始化斐波那契数列,至少需要前45项,以便处理最多40位的斐波那契数。这些数将用于转换和加法运算。

# include 
#include
#include
#include
#include
using namespace std;ll F[50];string s1, s2, s3;void init() { F[0] = 1; F[1] = 2; for (int i = 2; i <= 50; ++i) { F[i] = F[i-1] + F[i-2]; }}ll getnum(const string& s) { ll ans = 0; int len = s.size(); for (int i = 0; i < len; ++i) { if (s[i] == '1') { ans += F[len - 1 - i]; } } return ans;}void solve(ll num, string& s) { int i = 45; while (i >= 0 && F[i] > num) { --i; } for (int t = i; t >= 0; --t) { if (num >= F[t]) { num -= F[t]; s += '1'; } else { s += '0'; } } if (i < 0) { s += '0'; }}

加法操作

为了将两个斐波那契数相加,首先需要将它们转换为数值形式,然后进行加法运算,最后将结果转换回规范形式。

  • 读取输入:从标准输入读取两个斐波那契数串。
  • 转换为数值:使用getnum函数将每个字符串转换为对应的数值。
  • 相加数值:将两个数值相加得到结果数值。
  • 转换为规范形式:使用solve函数将结果数值转换回规范形式的斐波那契数串。
  • 规范形式转换

    在转换过程中,我们需要从最高位开始选择最大的斐波那契数,同时确保不会出现相邻的两个1。这样,可以避免造成规范不规范的状态。

    例如,将数值40转换为规范形式:

    • 找到最大的F[6]=21,减去21,得到19。
    • 接着找到F[5]=13,减去13,得到6。
    • 然后是F[3]=5,减去5,得到1。
    • 最后,F[0]=1,得到结果。
    • 拼接起来,即1001001,但这个不是规范形式,因为它包含了相邻的1。
    • 正规范形式应该是10001001,逐步递减。

    输出格式

    输出包括四个部分:

  • X的规范形式:可能前面有空格对齐。
  • + Y 的规范形式:同样可能前面有空格对齐。
  • 减号对齐:与和的结果长度相同的减号。
  • X + Y 的结果:规范形式对齐。
  • 如示例所示,输出会将每个数字前面补空格,使每位数字对齐。这样可以确保视觉上的整齐性和对齐性。

    示例处理

    对于输入11101 11011:

    • 11101对应的数值为39。
    • 11011对应的数值为41。
    • 39 + 41 = 80。
    • 80的规范形式是1001000。

    输出格式化后,每一位前面补空格,减号部分与和的结果长度对齐。

    注意事项

    • 在转换过程中,确保正确处理进位问题,避免信息丢失。
    • 规范形式转换时,避免出现相邻的1。
    • 输出时,确保对齐性,前导零需要保留,以确保输入和输出在同一线上对齐。

    通过以上步骤,可以实现一个正确计算斐波那契基数加法的程序,同时确保结果符合规范形式和输出要求。

    转载地址:http://vgymz.baihongyu.com/

    你可能感兴趣的文章
    Nginx启动SSL功能,并进行功能优化,你看这个就足够了
    查看>>
    nginx启动脚本
    查看>>
    Nginx在Windows上和Linux上(Docker启动)分别配置基本身份认证示例
    查看>>
    Nginx在Windows下载安装启动与配置前后端请求代理
    查看>>
    Nginx多域名,多证书,多服务配置,实用版
    查看>>
    nginx如何实现图片防盗链
    查看>>
    Nginx学习总结(12)——Nginx各项配置总结
    查看>>
    Nginx学习总结(13)——Nginx 重要知识点回顾
    查看>>
    Nginx学习总结(14)——Nginx配置参数详细说明与整理
    查看>>
    nginx学习笔记002---Nginx代理配置_案例1_实现了对前端代码的方向代理_并且配置了后端api接口的访问地址
    查看>>
    Nginx安装与常见命令
    查看>>
    Nginx安装及配置详解
    查看>>
    nginx安装配置
    查看>>
    Nginx实战经验分享:从小白到专家的成长历程!
    查看>>
    Nginx实现反向代理负载均衡
    查看>>
    nginx实现负载均衡
    查看>>
    nginx常用命令及简单配置
    查看>>
    nginx开机启动脚本
    查看>>
    nginx异常:the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf
    查看>>
    nginx总结及使用Docker创建nginx教程
    查看>>