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

车站——斐波那契(再做做)

题目描述

火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上、下车,但上、下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人。从第3站起(包括第3站)上、下车的人数有一定规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第n-1站),都满足此规律。现给出的条件是:共有N个车站,始发站上车的人数为a,最后一站下车的人数是m(全部下车)。试问x站开出时车上的人数是多少?

输入输出格式

输入格式:

 

a(<=20),n(<=20),m(<=2000),和x(<=20),

 

输出格式:

 

从x站开出时车上的人数。

 

输入输出样例

输入样例#1:
5 7 32 4
输出样例#1:
13



解法一:暴力枚举(有点不靠谱,由于测试数据太水,竟让我给水过了)
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
int read()
{
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        x=x*10+ch-'0';
        ch=getchar();
    }
    return f*x;
}
int main()
{
    int a=read(),n=read(),m=read(),b=read();
    int on[21],oncar[21],down[21];
    on[1]=a;
    oncar[1]=a;
    for(int i=0;;i++)
    {
        on[2]=i;
        oncar[2]=a;
        down[2]=i;
        for(int j=2;j<=n-1;j++)
        {
            oncar[j]=oncar[j-1]+on[j]-down[j];
            on[j+1]=on[j-1]+on[j];
            down[j+1]=on[j];
        }
        if(oncar[n-1]==m) break;
    }
    printf("%d\n",oncar[b]);
    return 0;
}

 

法二:

 通过分析题目我们可以发现以下规律

以下是上车人数的规律

 

 

通过观察上述表格会发现:红色部位和蓝色部位都是斐波那契数列耶!!
那就好玩了
这样我们就可以推出这样一个方程
上车人数=f(x-2)a+f(x-1)t
车上人数的规律



也就是说
车上人数=前一站人数+上两站人数(1站);


废话少说,下面提供蒟蒻代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
int main()
{
    int a,b,n,m,x,fibo[21]={0};
    scanf("%d%d%d%d",&a,&n,&m,&x);
    fibo[0]=0;fibo[1]=1;
    for(int i=2;i<=n;i++)
        fibo[i]=fibo[i-1]+fibo[i-2];
    //f[n-1]=fibo[n-2]*b+fibo[n-3]*a
    //m=fibo[n-2]*b+fibo[n-3]*a+a-b
    //m=(fibo[n-2]-1)*b+(fibo[n-3]+1)*a
    b=(m-(fibo[n-3]+1)*a)/(fibo[n-2]-1);
    printf("%d",(fibo[x-1]-1)*b+(fibo[x-2]+1)*a);
}
 
   

 

 

转载于:https://www.cnblogs.com/z360/p/6682037.html

相关文章:

  • Unity 编译 Android 的原理解析和 apk 打包分析
  • zabbix_agentd 服务启动
  • 12_03_Linux软件管理之三yum
  • MyEclipse下Maven的安装配置
  • python闭包与装饰器
  • PHP技能评测
  • 4月13
  • FancyBox的使用技巧 (汇总)
  • 使用Maven对JAVA程序打包-带主类、带依赖【转】
  • CSS3知识点整理一些demo
  • python loss layer: does not need backward computation?
  • [CSS] 点击事件触发的动画
  • ZooKeeper监控平台搭建
  • Problem A: 字符的变化
  • 【MongoDB学习-在.NET中的简单操作】
  • [Vue CLI 3] 配置解析之 css.extract
  • 08.Android之View事件问题
  • Effective Java 笔记(一)
  • es6--symbol
  • Python 基础起步 (十) 什么叫函数?
  • Redux系列x:源码分析
  • Spring核心 Bean的高级装配
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 从0实现一个tiny react(三)生命周期
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 给github项目添加CI badge
  • 关于extract.autodesk.io的一些说明
  • 两列自适应布局方案整理
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前嗅ForeSpider采集配置界面介绍
  • 算法之不定期更新(一)(2018-04-12)
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 优化 Vue 项目编译文件大小
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 函数计算新功能-----支持C#函数
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #define用法
  • #etcd#安装时出错
  • #pragma multi_compile #pragma shader_feature
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (安卓)跳转应用市场APP详情页的方式
  • (搬运以学习)flask 上下文的实现
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (力扣题库)跳跃游戏II(c++)