就是从n位数中取出n-d个数字按顺序排成一排组成一个新数使得其最大 算法: 从前往后确定每一位.找第i位时,要求后面留下d-i位的空间, 因此第i位应该从第i-1位原来位置+1到第d+i位寻找 用线段树确定区间最大值(其实直接用优先队列就行了,可能会多一些多余的出队操作) 更好的算法: ***引用 后来看到一个博客写的特别巧妙, 每读取一个字符,如果ans中有字符,且如果删除一个字符后面的数字数量依然够的话, 并且ans中最后一个数字比新读取的小,那么删除最后一个字符,把新读取的字符加入ans.…
最近学习了MFC一些比较基础的知识,所以打算通过做一个简单的数字游戏来理解MFC的流程并进一步熟悉其操作. 在这里,我做了一个猜数字的小游戏.第一步当然是设计主界面,先给大家展示一下游戏界面: 主界面: 从这个主界面可以看到,它包含标题,菜单栏,工具栏. 标题是给人一个认识,这是什么游戏,标题设置为:“猜数游戏”: 而菜单栏和工具栏才是游戏的核心,它要保证能够完成游戏的基本功能. 菜单栏和工具栏是对应的,包含了”start“,"help","restart"这三个菜…
要求: 输入一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 实现代码: package kaoshi; import java.util.Scanner; public class palindrome { public static void main(String[] args) { System.out.println("请输入一个5位数:"); Scanner sc = new Scanner(System.in); int num =…
考虑这么一个 14 位数 02565413989732 ,如图所示,它的数字先逐渐变大,然后开始变小,再变大,再变小,再变大,再变小.我们就说,它一共包含了 6 个单调区间.我们的问题就是:一个 n 位数平均有多少个单调区间?为了避免歧义,我们假设任意两位相邻的数字都不相同,因而像 77765589911 这样的数我们就不考虑了.另外,大家可能已经注意到了,我们允许这个 n 位数以数字 0 开头.因而,更精确地说,我们的问题是:相邻数字都不相同的.允许以 0 开头的所有 n 位数当中,平均有多少…
例如一个6位数的10进制密码,共有106个密码,如果把每个6位数的密码编成号就是[0,106-1].这是十进制的情况,即6个位,每个位有10种选择.如果要遍历所有密码,需要6重for循环,每个循环10次.假如是100位的密码,每位15中选择呢,那就需要100重for循环根本,不可能写代码遍历. 那么对于n个位,每位m种选择呢,如何遍历每个密码?如果也把这样的密码编号成一个十进制数,如何由这个十进制数得到每个位上的数字呢? 下面的代码可以实现这种转换. void convert(int m,int…
由于这道题目在牛客上没有,所以在此记录一下. 一.题目大意: 数字以0123456789101112131415…的格式序列化到一个字符序列中.在这个序列中,第5位(从0开始计数,即从第0位开始)是5,第13位是1,第19位是4,等等.请写一个函数,求任意第n位对应的数字. 二.题解<剑指offer>上提供了两种思路. 方法1: 第一种思路是:从0开始枚举每个数字.每枚举一个数字的时候,求出该数字是几位(如15是2位数.9323是4位数),并把该数字的位数和前面所有数字的位数累加.如果位数之和…
计算一个无符整数中1Bit的个数(1) 2010-04-20 10:52:48 分类: C/C++ [转]计算一个无符整数中1Bit的个数(1)   Count the number of bits that are on in an unsigned integer(计算一个无符整数中1Bit的个数)-- (1) 计算一个无符号整数中有多少的Bit为1 这是一个经常遇到的经典问题,这里分两个部分讲解和总结,首先对讲解现有的算法,然后再讲解一些改进算法. 1.循环法(Iterated Count…
C/C++中的64位整数(__int64 and long long) 在做ACM题时,经常都会遇到一些比较大的整数.而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647.而unsigned范围是[0,2^32),即0~4294967295.也就是说,常规的32位整数只能够处理40亿以下的数. 那遇到比40亿要大的数怎么办呢?这时就要用到C++的64位扩展了.不同的编译器对64位整数的扩展有所不同.基于ACM…
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 数字以0123456789101112131415..的格式序列化到一个字符序列中.在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等.请写一个函数,求任意第n位对应的数字. [牛客网刷题地址] 无 思路分析 数字位数为1时 ,共有10个1位数 数字位数为2时 ,共有9*10个2位数 数字位数为3时 ,共有9*(10^2)个3位数 ... 数字位数为m时 ,共有9*(10^(m-1))个m位数 当给出序列号为…
题目: 数字以0123456789101112131415…的格式序列化到一个字符序列中.在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等.请写一个函数,求任意第n位对应的数字. 题解: 以第15位数字2为例(2隶属与12,两位数,位于12从左侧以0号开始下标为1的位置)步骤1:首先确定该数字是属于几位数的; 如果是一位数,n < 9; 如果是两位数,n < 9 + 90 * 2 = 189;说明是两位数.步骤2:确定该数字属于哪个数.10 + (15 - 10) /…