问题描述

  小明想知道,满足以下条件的正整数序列的数量:

  1. 第一项为 n;

  2. 第二项不超过 n;

  3. 从第三项开始,每一项小于前两项的差的绝对值。

  请计算,对于给定的 n,有多少种满足条件的序列。

输入格式

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

输出格式

  输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。

样例输入

4

样例输出

7

样例说明

  以下是满足条件的序列:

  4 1

  4 1 1

  4 1 2

  4 2

  4 2 1

  4 3

  4 4

评测用例规模与约定

  对于 20% 的评测用例,1 <= n <= 5;

  对于 50% 的评测用例,1 <= n <= 10;

  对于 80% 的评测用例,1 <= n <= 100;

  对于所有评测用例,1 <= n <= 1000。

 

package 第十三次模拟;

import java.util.Scanner;

public class Demo8序列 {
public static int n=0,count=0;
public static int [] []map ;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n =sc.nextInt();
sc.close();
map = new int [n+1][n+1];
for (int i = 1; i <=n; i++) {
map[i][i]=1;
map[i][0]=1;
map[0][i]=1;
}
for (int i = 1; i <=n; i++) {
count+=f(n,i);
count%=10000;
// System.out.println(count);
}
System.out.println(count);
// System.out.println(f(4,2)); }
public static int f(int x,int y){
if(map[x][y]!=0){
return map[x][y];
}
for (int i = Math.abs(x-y)-1; i>=0; i--) {
map[x][y]+=f(y,i);
}
map[x][y]%=10000;
// map[y][x]=map[x][y];
// System.out.println();
return map[x][y];
} }
package 第十三次模拟;

import java.util.Scanner;

public class 正整数序列 {
public static int n = 0, count = 0;
public static int[][] map; public static void main(String[] args) {
long start = System.currentTimeMillis();
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
sc.close();
map = new int[n + 2][n + 2];
for (int i = 1; i <= n; i++) {
map[i][i] = 1;
map[i][0] = 1;
map[0][i] = 1;
map[i][i - 1] = 1;
map[i - 1][i] = 1;
// map[i+1][i]=1;
// map[i][i+1]=1; // for (int j = i-1; j>=0; j--) {
// for (int j2 = Math.abs(i-n)-1; j2 >=0; j2--) {
// map[n][i]+=map[i][j2];
// }
// map[n][i]%=10000;
//// }
// System.out.println(map[n][i]);
// count+=map[n][i];
}
for (int i = 1; i <= n; i++) {
// System.out.print(n+" "+i+" "+map[n][i]+" ");
if (map[n][i] == 0) { for (int j2 = 0; j2 <= Math.abs(i - n) - 1; j2++) {
if (map[i][j2] == 0) {
f(i, j2);
// for (int j = 0; j<=Math.abs(i-j2)-1; j++) {
// map[i][j2]+=map[j2][j];
// }
// map[j2][i]=map[i][j2];
}
map[n][i] += map[i][j2];
// System.out.print(i+" "+j2+" ");
}
map[n][i] %= 10000;
}
// } // System.out.println(n+" "+i+" "+map[n][i]);
// System.out.println(map[n][i]);
count += map[n][i];
count %= 10000;
// if(map[i][n]==0)
map[i][n] = map[n][i];
// count+=f(n,i);
// count%=10000;
//// System.out.println(count);
}
System.out.println(count);
long end = System.currentTimeMillis();
System.out.println(end - start);
// System.out.println(f(4,2)); } public static int f(int x, int y) {
if (map[x][y] != 0) {
return map[x][y];
}
for (int i = Math.abs(x - y) - 1; i >= 0; i--) {
map[x][y] += f(y, i);
}
map[x][y] %= 10000;
// map[y][x]=map[x][y];
// System.out.println();
return map[x][y];
} }

Java实现蓝桥杯模拟正整数序列的数量的更多相关文章

  1. Java实现蓝桥杯模拟递增的数

    问题描述 一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数. 给定正整数 n,请问在整数 1 至 n 中有多少个数 ...

  2. Java实现蓝桥杯模拟组织晚会

    问题描述 小明要组织一台晚会,总共准备了 n 个节目.然后晚会的时间有限,他只能最终选择其中的 m 个节目. 这 n 个节目是按照小明设想的顺序给定的,顺序不能改变. 小明发现,观众对于晚上的喜欢程度 ...

  3. Java实现蓝桥杯模拟空地长草

    问题描述 小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1. 小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地. 这些草长得很快,每个月,草都会向外长出一 ...

  4. Java实现蓝桥杯模拟元音单词的验证

    问题描述 小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音 ...

  5. Java实现蓝桥杯模拟存储转换

    问题描述 在计算机存储中,15.125GB是多少MB? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. pac ...

  6. Java实现蓝桥杯模拟约数的个数

    问题描述 1200000有多少个约数(只计算正约数). 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. pac ...

  7. Java实现蓝桥杯模拟递增三元组

    问题描述 在数列 a[1], a[2], -, a[n] 中,如果对于下标 i, j, k 满足 0<i<j<k<n+1 且 a[i]<a[j]<a[k],则称 a ...

  8. Java实现蓝桥杯模拟带九9的数的个数

    问题描述 在1至2019中,有多少个数的数位中包含数字9? 注意,有的数中的数位中包含多个9,这个数只算一次.例如,1999这个数包含数字9,在计算只是算一个数. 答案提交 这是一道结果填空的题,你只 ...

  9. Java实现蓝桥杯模拟树的叶结点数量

    问题描述 一棵包含有2019个结点的树,最多包含多少个叶结点? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. ...

随机推荐

  1. k近邻法(二)

    上一篇文章讲了k近邻法,以及使用kd树构造数据结构,使得提高最近邻点搜索效率,但是这在数据点N 远大于 2^n 时可以有效的降低算法复杂度,n为数据点的维度,否则,由于需要向上回溯比较距离,使得实际效 ...

  2. Python求差集

    本月月初在职员工表(20来列,身份证.银行卡号等),本月离职员工表(10来列,计时.计件等),不考虑本月入职员工表,求下月月初在职员工表. Python,import pandas as pd,两个p ...

  3. Windows系统目录

    文件功能 编辑 ├—WINDOWS │ ├—system32(存放Windows的系统文件和硬件驱动程序) │ │ ├—config(用户配置信息和密码信息) │ │ │ └—systemprofil ...

  4. TP5 order排序

    order方法属于模型的连贯操作方法之一,用于对操作的结果排序. ->order('sort desc,id desc') 用法如下: Db::table('think_user')->w ...

  5. 201843 2019-2020-2 《Python程序设计》实验二报告

    201843 2019-2020-2 <Python程序设计>实验二报告 课程:<Python程序设计> 班级: 1843 姓名: 李新锐 学号:20184302 实验教师:王 ...

  6. void 型指针的高阶用法,你掌握了吗?

    [导读] 要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用.测试环境采用 IAR for ARM 8.40.1 什么是void指针 void指针 ...

  7. Docker & k8s 系列二:本机k8s环境搭建

    本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装. k8s是什么 k8s是kubernetes的简写,它是一个全新的基于容器技术 ...

  8. 我的linux学习日记day2

    RPM  软件包管理器 目的:降低软件安装难度原理 :将软件源代码加上一套安装规则打包到一起,用户只需要运行RPM systemctl start 服务名称 开启服务systemctl stop 服务 ...

  9. python实现三级菜单源代码

    8月4号早晨天气晴,继续学习‘Alex’的python视频,写了用字典实现三级菜单的代码,都是循环和判断比较lower,废话不多说直接贴码: #!/user/bin/env python #-*-co ...

  10. jenkins 流水线学习

    最佳实践: https://www.cnblogs.com/itech/p/5678643.html 一些样例 https://jenkins.io/doc/pipeline/examples/ gi ...