给定m * n乘法表的高度m和长度n以及正整数k,则需要返回此表中第k个最小的数字。
来源:互联网 发布:让手机不能安装软件 编辑:程序博客网 时间:2024/05/19 03:21
int findKthNumber(int m, int n, int k) { int left=1*1; int right=m*n; while(left<right){ int mid=(left+right)>>1; int count=findNum(mid,m,n); if(count<k){ left=mid+1; }else{ right=mid; } } return right; } int findNum(int val,int m,int n){ int i=m; int j=1; int sum=0; while(i>0 && j<=n){ if(i*j <= val){ sum += i; j++; }else{ i--; } } return sum; }
阅读全文
0 0
- 给定m * n乘法表的高度m和长度n以及正整数k,则需要返回此表中第k个最小的数字。
- 给定正整数N和集合K,求不大于N的,且每一位数字都在K中的最大值M,比如N=297,K={2,5,8},则返回288
- 给定正整数 N, 求使N < 2^m 成立的最小m(C语言版)
- 任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0。
- 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表
- Java--给定两个有序的数组,长度分别为m和n,求这两个数组中的第K个元素。
- 两个有序数组A、B,长度分别为m、n,找到两个数组的第k个值并返回
- 恰好有N个因子的最小正整数M
- 有 n 个无序整数( n>10000), 则找出其中最大的 M 个数字( 5<M<10), 所需要的最小时间复杂度为:
- 给定一个数组,找到第k到m(0<k<=m<=n)大的数
- 输入一个正整数n,输出一个最小正整数m,使得m的各位乘积等于n
- ZOJ 3662 Math Magic(构造K个和为N且最小公倍数为M的正整数的方案数/dp)
- 给定两个整数n和k,返回1 ... n中k个数的所有可能组合。
- 给定2个数字,n,m,使得从1到n之间的数字组合,他们的和等于m,求所有组合
- 给定一个十进制数M,以及需要转换的进制数N。 将十进制数M转化为N进制数
- 给定正整数n和m,计算出n个元素的集合{1,2,...,n}可以划分为多少个不同的由m个元素组成的子集合
- 从n个数挑k个,和等于m
- 输入n,m,从1-n个数字里输出和为m的组合
- Ubuntu16.04下安装Python3的VIM IDE
- java web 下拉列表联动的实现
- 常用插接件2(DC 电源插头)
- 数字图像处理matlab版第三章
- Spring boot之数据访问及mybatis整合(三)
- 给定m * n乘法表的高度m和长度n以及正整数k,则需要返回此表中第k个最小的数字。
- npm安装webpack
- 欢迎使用CSDN-markdown编辑器
- Mysql知识回顾(二)
- AOP示例-xml方式与annotation方式
- Ubuntu16.04 安装 ftp 服务器
- UVA
- 2017完整普及组题解Pascal
- Python源码阅读-内存管理机制(一)