[编程题] 小易喜欢的数列

时间限制:1秒

空间限制:32768K

小易非常喜欢拥有以下性质的数列:
1、数列的长度为n
2、数列中的每个数都在1到k之间(包括1和k)
3、对于位置相邻的两个数A和B(A在B前),都满足(A <= B)或(A mod B != 0)(满足其一即可)
例如,当n = 4, k = 7
那么{1,7,7,2},它的长度是4,所有数字也在1到7范围内,并且满足第三条性质,所以小易是喜欢这个数列的
但是小易不喜欢{4,4,4,2}这个数列。小易给出n和k,希望你能帮他求出有多少个是他会喜欢的数列。

输入描述:
输入包括两个整数n和k(1 ≤ n ≤ 10, 1 ≤ k ≤ 10^5)
输出描述:
输出一个整数,即满足要求的数列个数,因为答案可能很大,输出对1,000,000,007取模的结果。
输入例子1:
2 2
输出例子1:
3

题目不难,只要注意动态规划计算dp[i, j] (第i个数组元素值为j时,数组a[1,...i]的合法数的个数)的时候,用前i-1项都合法的个数减去第i-1, i项之间非法的个数,来节省计算复杂度。

用C编程的时候,居然遇到了“内存超限”的错误。。。好吧,只好改成只开两个数组,分别表示dp[i-1], dp[i]。

源码:

#include <stdlib.h>
#include <stdio.h>#ifndef M
#define M 1000000007
#endifint main()
{int n, k;int res;int pre_res;int *curr_dp;int *pre_dp;int sum;int i, j, t;int *p;scanf("%d%d", &n, &k);curr_dp = (int *)malloc(sizeof(*curr_dp) * (k + 1));pre_dp = (int *)malloc(sizeof(*pre_dp) * (k + 1));for (j = 1; j <= k; j++){curr_dp[j] = 1;}res = k;for (i = 2; i <= n; i++){pre_res = res;res = 0;p = curr_dp;curr_dp = pre_dp;pre_dp = p;for (j = 1; j <= k; j++) {sum = 0;for (t = (j << 1); t <= k; t += j){sum = (sum + pre_dp[t]) % M;}curr_dp[j] = sum = (pre_res - sum) % M;res = (res + sum) % M;}}printf("%d", res);free(curr_dp);free(pre_dp);return 0;
}

网易2018校招内推编程题 小易喜欢的数列相关推荐

  1. 一堆棋子java代码编程_网易2018校招内推编程题-堆棋子-C++实现

    0 1 3 10 解法 暴力枚举所有可能的点. 如图所示,黑点为输入点.所需遍历的点为红线的交点,红圈表示. 当时自己写的是遍历了外围红线所构成的封闭矩形里面所有的点了,只有60%的AC率,原因超时. ...

  2. 拼多多2018校招内推编程题汇总 详解

    编程 一.最大乘积 描述: 给定一个无序数组,包含正数.负数和 000,要求从中找出 333 个数的乘积,使得乘积最大,要求时间复杂度:O(n)O(n)O(n),空间复杂度:$O(1) $ 输入描述: ...

  3. 2019网易校招笔试算法编程题——小易橡皮泥

    (2018.9.8 15:00--17:00) (哇这题花了我40分钟(也没做出来)!直接害得我后面问答题来不及写!) 以下为题目的大概描述: 小易买了一块只有黑色(b)和白色(w)的橡皮泥(当作字符 ...

  4. 2018年网易校招内推编程题之交错01串

    如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串.例如: "1","10101","0101010"都是交错 ...

  5. 2017网易有道内推编程题

    一.[编程题] 洗牌 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程. 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张.首先,我们把这2n张牌分成两堆,左手拿着第1张到 ...

  6. 拼多多2018校招内推编程-大整数相乘

    编程题] 大整数相乘 时间限制:1秒 空间限制:32768K 有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示.不能用系统自带的大整数类型. 输入描述: 空格分隔的两个字符串,代表 ...

  7. 网易2018校招内推笔试-彩色砖块

    题目: 小易有一些彩色的砖块.每种颜色由一个大写字母表示.各个颜色砖块看起来都完全一样.现在有一个给定的字符串s,s中每个字符代表小易的某个砖块的颜色.小易想把他所有的砖块排成一行.如果最多存在一对不 ...

  8. 拼多多校招内推编程题3 六一儿童节

    题目 六一儿童节,老师带了很多好吃的巧克力到幼儿园.每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目.老师的目标是 ...

  9. 拼多多校招内推编程题1 最大乘积

    题目 给定一个无序数组,包含正数.负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 无序整数数组A[n] 输出描述: 满足条件的最大乘积 输 ...

  10. 拼多多校招内推编程题2 大整数乘法

    题目 有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示.不能用系统自带的大整数类型. 输入描述: 空格分隔的两个字符串,代表输入的两个大整数 输出描述: 输入的乘积,用字符串表示 ...

最新文章

  1. 通过gdb core dump方法查看程序异常时的堆栈信息
  2. TensorBoard可视化网络结构和参数Tensorboard windows显示空白
  3. hive整合sentry,impala,hue之后权限管理操作
  4. python二:注释
  5. Prolog 语言入门
  6. HashSet集合存储数据的结构(哈希表)及set集合存储元素不重复的原理
  7. 如何解析属性文件(properties)获取键值对的值?
  8. ashly理器4.8软件汉化版_AMD 处理器核心比英特尔多还更便宜?英特尔回应
  9. CSS深入理解学习笔记之vertical-align
  10. Apache手工编译安装(内附软件包)
  11. 比较一下以“反射”和“表达式”执行方法的性能差异【转】
  12. 读取excel并将其转换为xml
  13. java驱动刷机_ProductTool(炬力芯片刷机工具+驱动) v5.46 中文安装免费版
  14. oracle分析函数——rollup和cube
  15. 印刷点阵字体_印刷术—类型族,分类和组合字体
  16. 【托业】【新托业TOEIC新题型真题】学习笔记3-题库二-P5-6
  17. 百度的疯狂 UC的隐忍
  18. 根据 Excel 中的数据批量修改文件的扩展名
  19. 苹果Mac系统虚拟打印机CAD输出PDF文档软件—pdfwriter
  20. Android 高级面试题及答案

热门文章

  1. cisco的路由器上rip的被动接口,单播更新,水平分隔
  2. Java研发方向如何准备BAT技术面试
  3. 算法学习——递归和排列组合
  4. mysql挂科了咋办_大学第一学期挂科怎么办?
  5. 远程主机强迫关闭了一个现有的连接。_紧急 | 微软远程桌面服务高危漏洞(CVE-2019-0708)预警!...
  6. c++用一级运算比较大小_python学习五-python运算符
  7. html添加变量参数吗,动态CSS与变量参数? (可能吗?)
  8. python中write的用法_python中write方法是如何使用?
  9. python遍历链表_python实现双向循环链表
  10. 五句话介绍计算机英语,用英语描写电脑优点(5个句子)和缺点(5个句子),一共10句话哦....