Java实现 蓝桥杯 历届试题 波动数列
问题描述
观察这个数列:
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实现 蓝桥杯 历届试题 波动数列相关推荐
- 【Java】蓝桥杯历届试题 题解
历届试题 PREV-1 核桃的数量 历届试题 PREV-2 打印十字图 历届试题 PREV-3 带分数 历届试题 PREV-4 剪格子 历届试题 PREV-5 错误票据 历届试题 PREV-6 翻硬币 ...
- Java实现蓝桥杯历届试题兰顿蚂蚁
历届试题 兰顿蚂蚁 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其 ...
- Java实现 蓝桥杯 历届试题 核桃的数量
历届试题 核桃的数量 时间限制:1.0s 内存限制:256.0MB 问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的 ...
- Java实现 蓝桥杯 历届试题 带分数
问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...
- Java实现 蓝桥杯 历届试题 城市建设
问题描述 栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修.市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他. C市中有n个比较重要的地点,市长希望这些地点重点被考虑.现在 ...
- Java实现 蓝桥杯 历届试题 矩阵翻硬币
问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵. 随后,小明对每一个硬币分别进行一次 Q 操作. 对第x行第y列的硬币进行 Q 操作的定义:将所有第 ix 行,第 jy 列的硬币进行翻转. 其 ...
- Java实现蓝桥杯历届试题填字母游戏
题目描述 小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了".K大师在纸上画了一行n个格子,要小明 ...
- Java实现 蓝桥杯 历届试题 数字游戏
问题描述 栋栋正在和同学们玩一个数字游戏. 游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈.栋栋首先说出数字1.接下来,坐在栋栋左手边的同学要说下一个数字2.再下面的一个同学要从上一个同学说的数 ...
- Java实现 蓝桥杯 历届试题 危险系数
问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个危险系数DF( ...
最新文章
- python3官方最新下载-Python3.9下载
- 傻瓜式Linux之一:系统安装
- 设置storage模块的数据库操作支持、添加仓储分类列表接口(dao层)
- STL 之replace,replace_if,replace_copy,replace_copy_if
- 因变量 方差膨胀系数_请问如何计算潜变量的方差膨胀因子(VIF)?
- 80-600-020-原理-存储引擎-简介
- 计算两个经纬度的距离_HTML5 地理定位+地图 API:计算用户到商家的距离
- 互联网如何“武装”农民?
- 蚂蚁可信原生负责人入选“2021年度全球青年领袖”名单
- RS纠删码性能分析实战
- 一对一高清直播系统解决方案
- 杭州电子科技大学计算机非全日制,杭州电子科技大学非全日制研究生考试难吗?...
- 中国书信礼仪 (二)
- 自用大智慧策略高端版本
- 厘米与像素的单位转换
- 物品冷启动问题解决办法
- 并查集的一些个人观点 以及克鲁斯卡尔算法的详解
- kafka(15) Kafka Connect
- 2022年国内运营商最全号段,联通、移动、电信、广电四大运营商
- Elasticsearch分析器(analyzer)以及与spring boot整合
热门文章
- 远程桌面连接(Remote Desktop Manager)
- Mentor Graphics Calibre 2017.1 Linux 1DVD寄生參數萃取
- Socket和ServerSocket(建立客户端和服务器端)
- 图像增广与扩充---带有噪声的黑白裂缝图像扩充,用于裂缝检测训练
- 计算机网络wifi是什么意思,Mifi是什么,和wifi有什么区别?
- 传统企业想要实现数字化转型,主要包含以下几大趋势?
- ORACLE利用序列实现ID自增
- Android处子Demo—简易的UC首页动画
- Java基础编程之分解质因数
- gotoxy()的用法.