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

波动数列(蓝桥杯)

问题描述:


观察如下数列:
1 3 0 2 -1 1 -2 …
这个数列中后一项总是比前一项增加 2 或者减少 3。
栋栋对这种数列很好奇,他想知道长度为 n nn 和为 s ss 而且后一项总是比前一项增加 a aa 或者减少 b bb 的整数数列可能有多少种呢?

输入格式
输入的第一行包含四个整数 n   s   a   b n\ s\ a\ bn s a b,含义如前面说述。

输出格式
输出一行,包含一个整数,表示满足条件的方案数。由于这个数很大,请输出方案数除以 100000007 的余数。

样例输入
4 10 2 3

样例输出
2

样例说明
这两个数列分别是 {2 4 1 3} 和 {7 4 1 -2}。

暴力解法(超时):

#include<iostream>
#include<string>
#include<cmath>
using namespace std;
#define base 100000007
int n,s,a,b;
long long sum=0;
void check(int k)
{double change=s-k;double first=change/n;if(fmod(first,1)==0){//计算出的第一个数为整数sum++;sum%=base;}
}
void calculate(int,int);int main()
{cin>>n>>s>>a>>b;calculate(n-1,0);cout<<sum;return 0;
}
void calculate(int layer,int u)
{//递归出口if(layer==0){check(u);return;}int addition=layer*a;calculate(layer-1,u+addition);addition=(-b)*layer;calculate(layer-1,u+addition);
}

动态规划:

#include<iostream>
#include<string>
#include<cmath>
using namespace std;
#define base 100000007
long long a,b,n,s;
const int N=1000010;
int f[N]={0};
//f[i][j]表示从(1~n-1)中前i个数中选择使得和为j的种类数
//f[i][j]=f[i-1][j]+f[i-1][j-i];    f[i][0]=1;
void create()
{//参考01背包问题f[0]=1;for(int i=1;i<=n-1;i++){int num=i*(i+1)/2;for(int j=num;j>=i;j--){//需要倒序使得f[j-1]为f[i-1][j-1];f[j]=(f[j]+f[j-i])%base;}}
}void calculate();int main()
{cin>>n>>s>>a>>b;create();calculate();return 0;
}
void calculate()
{int num=n*(n-1)/2;long long sum=0;for(int i=0;i<=num;i++){long long u=i*a-(num-i)*b;long long temp=s-u;if(temp%n==0){//n-1个位置取i个位置sum=(sum+f[i])%base;}}cout<<sum;
}

http://www.lryc.cn/news/310482.html

相关文章:

  • 第二篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas金融数据分析
  • Flink:Temporal Table Function(时态表函数)和 Temporal Join
  • Go语言中的时间控制:定时器技术详细指南
  • 面试笔记系列六之redis+kafka+zookeeper基础知识点整理及常见面试题
  • Golang动态高效JSON解析技巧
  • 双重检验锁
  • 【RISC-V 指令集】RISC-V DSP 扩展指令集介绍(一)
  • RocketMQ - CentOS 7.x 安装单机版并测试
  • [JavaWeb玩耍日记]HTML+CSS+JS快速使用
  • 如何使用ArcGIS Pro创建最低成本路径
  • Neoverse CSS N3:实现市场领先能效的最快途径
  • JavaScript实现的计时器效果
  • 仿函数(Functor(c++))
  • 智能汽车加速车规级存储应用DS2431P+TR 汽车级EEPROM 存储器IC
  • js json转换成字符串
  • Linux笔记--基本操作指令
  • 论文阅读:基于超像素的图卷积语义分割(图结构数据)
  • 记录踩过的坑-macOS下使用VS Code
  • 30天JS挑战(第十四天)------数据的复制
  • 【洛谷 P8682】[蓝桥杯 2019 省 B] 等差数列 题解(数学+排序+辗转相除法)
  • Linux:kubernetes(k8s)部署CNI网络插件(4)
  • docker save 命令 docker load 命令 快速复制容器
  • Apache Flink连载(三十七):Flink基于Kubernetes部署(7)-Kubernetes 集群搭建-3
  • 【机器学习】实验6,基于集成学习的 Amazon 用户评论质量预测
  • 【寸铁的刷题笔记】图论、bfs、dfs
  • vue2 + axios + mock.js封装过程,包含mock.js获取数据时报404状态的解决记录,带图文,超详细!!!
  • 对象变更记录objectlog工具(持续跟新)
  • 平衡二叉树,二叉树的路径,左叶子之和
  • Sodinokibi勒索病毒最新变种,解密工具更新到2.0版本
  • css 鼠标移入放大的效果