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

蓝桥杯省模赛 台阶方案

问题描述

小蓝要上一个楼梯,楼梯共有 n 级台阶(即小蓝总共要走 n 级)。小蓝每一步可以走 a 级、b 级或 c 级台阶。

请问小蓝总共有多少种方案能正好走到楼梯顶端?

输入格式

输入的第一行包含一个整数 n 。

第二行包含三个整数 a,b,c 。

输出格式

输出一行包含一个整数,表示答案。答案可能很大,请输出答案除以 1000000007 后的余数。

样例输入

4
1 2 3

样例输出

7

样例输入

7
2 4 6

样例输出

0

评测用例规模与约定

对于 30% 评测用例,1≤a<b<c≤n≤50。

对于 60% 评测用例,1≤a<b<c≤n≤1000。

对于所有评测用例,1≤a<b<c≤n≤1000000。

一维动态规划:f[i] 表示走到数字 i 的方式数

1.边界

f[a] = f[b] = f[c] = 1

如果 i=a、i=b、或 i=c,那么 f[i]=1,因为只用一个步长就可以凑成 i。

2.递推关系式

#include<iostream>
using namespace std;

const int N = 1e6+10;
const int mod = 1e9+7;

int f[N];
int n, a, b, c; 

int main()
{
	cin>>n>>a>>b>>c;
	
	f[a] = f[b] = f[c] = 1;
	for(int i=1; i<=n; ++i)
	{
		if(i>=a) f[i]=(f[i]+f[i-a]) % mod;
		if(i>=b) f[i]=(f[i]+f[i-b]) % mod;
		if(i>=c) f[i]=(f[i]+f[i-c]) % mod;
	}
	cout<<f[n];
	
	return 0;
}

 

相关文章:

  • 微信登录、商品浏览前瞻
  • 简单版CentOS7配置haproxy
  • PyTorch 深度学习实战(31):可解释性AI与特征可视化
  • 数据层的基本操作(2)
  • 如何将生活场景转换为数据模型模型仿真?
  • MSSQL:模拟故障
  • 基于 Spring Boot 的项目模板搭建指南
  • linux如何与windows进行共享文件夹开发,不用来回用git进行拉来拉去,这个对于swoole开发者来说特别重要
  • 自然语言处理(27:(终章Attention 3.)Attention的评价)
  • Linux Vim 编辑器的使用
  • 在线转换ico格式工具,给qt生成的exe添加桌面图标
  • Java 基础-28- 多态 — 多态下的类型转换问题
  • 4月01日,每日信息差
  • Pytorch学习笔记(十九)Image and Video - Spatial Transformer Networks Tutorial
  • 标题:利用 Rork 打造定制旅游计划应用程序:一步到位的指南
  • 汇编学习之《运算和逻辑指令》
  • GO语言学习(14)GO并发编程
  • 40.C++哈希6(哈希切割/分片/位图/布隆过滤器与海量数据处理场景)
  • 最大正方形(前缀和)
  • seq2seq
  • 台陆委会将欧阳娜娜等20多名艺人列入重要查核对象,国台办回应
  • 以色列称“将立即允许恢复”人道主义物资进入加沙
  • 用贝多芬八首钢琴三重奏纪念风雨并肩20年
  • 以军称已开始在加沙的新一轮大规模攻势
  • 遭车祸罹难的村医遇“身份”难题:镇卫生院否认劳动关系,家属上诉后二审将开庭
  • 【社论】城市更新,始终以人为核心