问题描述

观察这个数列:
  1 3 0 2 -1 1 -2 …

这个数列中后一项总是比前一项增加2或者减少3。

栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减少b的整数数列可能有多少种呢?

输入格式

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

输出格式

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

样例输入

4 10 2 3

样例输出

2

样例说明

这两个数列分别是2 4 1 3和7 4 1 -2。

数据规模和约定

对于10%的数据,1<=n<=5,0<=s<=5,1<=a,b<=5;
  对于30%的数据,1<=n<=30,0<=s<=30,1<=a,b<=30;
  对于50%的数据,1<=n<=50,0<=s<=50,1<=a,b<=50;
  对于70%的数据,1<=n<=100,0<=s<=500,1<=a, b<=50;
  对于100%的数据,1<=n<=1000,-1,000,000,000<=s<=1,000,000,000,1<=a, b<=1,000,000。

import java.util.Scanner;public class Main {public static long n, s, a, b;public static long result = 0L;public static int e = 0;public static long[][] dp;;public void getDP() {//DP[1-e][j]这里的意思是,我的+j个a,//一直1-e就是是上一个dp = new long[2][1000005];dp[e][0] = 1;for(int i = 1;i < n;i++) {e = 1 -e;for(int j = 0;j <= i * (i + 1) / 2;j++) {if(i > j)dp[e][j] = dp[1 - e][j];else//这个意思是,我可以是上次的+j个a,也可以是在-i个b,这里就变成了+j-i个a//因为我只有两种选择,一个是+a一个是-b,我是j-i个+a,剩下的就是i个-bdp[e][j] = (dp[1 - e][j] + dp[1 - e][j - i]) % 100000007;}}}public static void main(String[] args) {Main test = new Main();Scanner in = new Scanner(System.in);n = in.nextLong();s = in.nextLong();a = in.nextLong();b = in.nextLong();test.getDP();for(long i = 0;i <= n * (n - 1) / 2;i++) {long t = s - i * a + (n*(n-1)/2-i) * b;//t就是除去添加a和删去b剩下的数的和,必须被n整除才可以//这里你要是问为什么上句话是必须被n整除,你可以出门右转了//因为我只有两种操作,我把两种操作的数字都删了,就是剩下的数字的和了,我剩下数字的和是我n个数平分的if(t % n == 0)//哪种方式合适就用哪种result = (result + dp[e][(int) i]) % 100000007;}System.out.println(result);}
}

Java实现 蓝桥杯 历届试题 波动数列相关推荐

  1. 【Java】蓝桥杯历届试题 题解

    历届试题 PREV-1 核桃的数量 历届试题 PREV-2 打印十字图 历届试题 PREV-3 带分数 历届试题 PREV-4 剪格子 历届试题 PREV-5 错误票据 历届试题 PREV-6 翻硬币 ...

  2. Java实现蓝桥杯历届试题兰顿蚂蚁

    历届试题 兰顿蚂蚁 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其 ...

  3. Java实现 蓝桥杯 历届试题 核桃的数量

    历届试题 核桃的数量 时间限制:1.0s 内存限制:256.0MB 问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的 ...

  4. Java实现 蓝桥杯 历届试题 带分数

    问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...

  5. Java实现 蓝桥杯 历届试题 城市建设

    问题描述 栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修.市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他. C市中有n个比较重要的地点,市长希望这些地点重点被考虑.现在 ...

  6. Java实现 蓝桥杯 历届试题 矩阵翻硬币

    问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵. 随后,小明对每一个硬币分别进行一次 Q 操作. 对第x行第y列的硬币进行 Q 操作的定义:将所有第 ix 行,第 jy 列的硬币进行翻转. 其 ...

  7. Java实现蓝桥杯历届试题填字母游戏

    题目描述 小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了".K大师在纸上画了一行n个格子,要小明 ...

  8. Java实现 蓝桥杯 历届试题 数字游戏

    问题描述 栋栋正在和同学们玩一个数字游戏. 游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈.栋栋首先说出数字1.接下来,坐在栋栋左手边的同学要说下一个数字2.再下面的一个同学要从上一个同学说的数 ...

  9. Java实现 蓝桥杯 历届试题 危险系数

    问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个危险系数DF( ...

最新文章

  1. python3官方最新下载-Python3.9下载
  2. 傻瓜式Linux之一:系统安装
  3. 设置storage模块的数据库操作支持、添加仓储分类列表接口(dao层)
  4. STL 之replace,replace_if,replace_copy,replace_copy_if
  5. 因变量 方差膨胀系数_请问如何计算潜变量的方差膨胀因子(VIF)?
  6. 80-600-020-原理-存储引擎-简介
  7. 计算两个经纬度的距离_HTML5 地理定位+地图 API:计算用户到商家的距离
  8. 互联网如何“武装”农民?
  9. 蚂蚁可信原生负责人入选“2021年度全球青年领袖”名单
  10. RS纠删码性能分析实战
  11. 一对一高清直播系统解决方案
  12. 杭州电子科技大学计算机非全日制,杭州电子科技大学非全日制研究生考试难吗?...
  13. 中国书信礼仪 (二)
  14. 自用大智慧策略高端版本
  15. 厘米与像素的单位转换
  16. 物品冷启动问题解决办法
  17. 并查集的一些个人观点 以及克鲁斯卡尔算法的详解
  18. kafka(15) Kafka Connect
  19. 2022年国内运营商最全号段,联通、移动、电信、广电四大运营商
  20. Elasticsearch分析器(analyzer)以及与spring boot整合

热门文章

  1. 远程桌面连接(Remote Desktop Manager)
  2. Mentor Graphics Calibre 2017.1 Linux 1DVD寄生參數萃取
  3. Socket和ServerSocket(建立客户端和服务器端)
  4. 图像增广与扩充---带有噪声的黑白裂缝图像扩充,用于裂缝检测训练
  5. 计算机网络wifi是什么意思,Mifi是什么,和wifi有什么区别?
  6. 传统企业想要实现数字化转型,主要包含以下几大趋势?
  7. ORACLE利用序列实现ID自增
  8. Android处子Demo—简易的UC首页动画
  9. Java基础编程之分解质因数
  10. gotoxy()的用法.