问题:
给定一个自然数N,计算1,2,3...N中,出现1和2的数量。比如1,2,3...10,一共出现了3次,1,2,3...12,一共出现了7次。
思路:
比如计算54321,可以先计算50000,再计算50001-54321中1和2的个数,而后者又可以看成计算4321中1和2的个数,于是简化了问题。其中计算50000的时候,可以计算49999中有多少个1和2,也就递归转变成了一个已知的求解方法,再加上50000所代表的1和2的个数(0个)。
def count_from_number(number): if number < 10: if number == 0: return 0 elif number == 1: return 1 else: return 2 number_str = str(number) first = number_str[0] left = number_str[1:] head = first + len(left) * '0' count = 0 count += count_head(int(head)) if first == '1' or first == '2': count += (number - int(head)) count += count_from_number(int(left)) return count // 这个方法计算1000、50000这种以0结尾的数字中1和2的个数 def count_head(number): number_str = str(number) first = number_str[0] count = 0 if first == '1' or first == '2': count += 1 count += count_from_number(number - 1) return count number = 10 print("count 1 or 2 for %d"%number) print("result: %d"%count_from_number(number)) number = 12 print("count 1 or 2 for %d"%number) print("result: %d"%count_from_number(number)) number = 122 print("count 1 or 2 for %d"%number) print("result: %d"%count_from_number(number))
相关推荐
要求对给定的又n个自然数的组成的多重集S,计算S的众数及其重数。 4.最近点对问题 设p1=(x1, y1), p2=(x2, y2), …, pn=(xn, yn)是平面上n个点构成的集合S,设计算法找出集合S中距离最近的点对。 (1)分别用蛮力...
给出2n个(n)个自然数(数小于等于30000)。游戏双方分别为A方(计算机方)和B方(对弈的人)。...a存储2*n个自然数序列;lp,rp为序列的左端位置和右端位置;ch为B方取数的位置信息(‘L’或‘R’);
一个集合如果允许存在相同的元素,则称之为多重集合.... 例如, S = { 1,2,2,2,3,5 } 的众数是 2, 其重数为 3. 本题对于给定的由 n 个自然数组成的多重集 S, 编程计算 S 的众数及其重数. Input
计算由2个相同大小N的自然数的升序数组组成的数组的中位数。不检查数组的正确排序。 局限性: 每个序列中最大的数字N为1073741823(具有足够的内存)。 序列中数字的最大允许值为9223372036854775807。 解决问题...
[问题描述] 考虑如下的序列生成算法:从整数 n 开始,如果 n 是偶数,把它除以 2;如果 n 是奇数,把它乘 3 加1。...输入两个数 i 和 j,你的任务是计算 i 到 j(包含 i 和 j)之间的整数中,循环节长度的最大值。
算法设计:对于给定的由n 个自然数组成的多重集S,计算S 的众数及其重数。">:给定含有n 个元素的多重集合S,每个元素在S 中出现的次数称为该 元素的重数。多重集S 中重数最大的元素成为众数。例如,S={1,2,2,2,3,5}...
题目描述 给定含有n 个元素的多重集合S,每个元素在S 中出现的次数称为该元素的重数。多重 集S 中重数最大的元素称为众数。...输出有2 行,第1 行给出众数,第2 行是重数。 样例输入 6 1 2 2 2 3 5 样例输出 2 3
python语言对于计算机专业的学生,不管是计算机软件...例题: 编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表 python学习—–使用列表实现筛选法求素数目录一、列表实现筛选法求素数的
但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? ...
3.1 输入一个大于3的整数n,判断它是否为素数(素数又称质数,就是除了能被1和它本身整除之外,不能被其它自然数整除的自然数) 3.2 输入两个数,求最大公约数和最大公倍数 3.3输入一行字符,输出其英文字母,空格,...
例如,在图1-1中,根结点A和结点B的度为2,结点C的度为1,叶子结点D,E,F的度为0。所以,该树的度为2。 深度 定义一棵树的根结点所在的层次为1,其他结点所在的层次等于它的父结点所在的层次加1。树的最大层次称为...
1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 7.阶乘尾数零的个数 8.借书方案知多少 9.杨辉三角形 10.数制转换 11.打鱼还是晒网 12.抓交通肇事犯 13.该存多少钱 14.怎样...
• 利用取舍函数生成重复个数的自然数序列 • 按照特定条件进行取舍计算 • 利用取舍函数解决四舍六入问题 • 产生50~100 的随机整数 • 利用随机函数仅生成数字和字母 • 利用随机函数实现考试座位随机编排 • 日...
1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 7.阶乘尾数零的个数 8.借书方案知多少 9.杨辉三角形 10.数制转换 11.打鱼还是晒网 12.抓交通肇事犯 13.该存...
[1],一个跨平台软件库,用于从时间序列中提取和编码序数模式 [2]。 它已成功测试可在Windows 、 macOS和GNU/Linux 上运行。 如果出现这种需求,它也可以轻松移植到其他平台。 除了作为 C 函数库之外, libordpat还...
随机产生300,000个不同自然数Key值(1-300,000,每个数出现一次,出现顺序随机),建立红黑树,查找Key=15000的节点,输出查找花费时间。 用上面的数据,建立二叉搜索树,查找Key=15000的节点,输出查找花费时间。...
36、 (组合问题)求出从自然数1,2,…,n中任取r个数的所有组合。 37、 传教士与野人渡河问题。有M个传教士和M个野人准备渡河,船一次最多载2人,任何时刻野人数不能多于传教士数,但允许全部为野人。编写算法给出...
建立了基于第三方带软时间窗约束的车辆路径模型,设计了基于自然数序列的改进遗传算法对模型进行求解,改进交叉与变异操作来保护优秀基因,提出了种群扩张机制。最后,算例结果表明模型可以有效减少物流配送成本,...
15.若已知一个栈的入栈序列是元素1,2,3,....,n,其输出序列为p1,p2,p3,…pn,若p1是n,则pi是( ) A) i B)n-i C)n-i+1 D)不确定 16.对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是 A) n ...
个元素,从1到N-1所有元素也会被计算并缓存。 尽管LazySeq (处于许多函数式语言和算法的核心)是不可变的和线程安全的(假设元素是,例如String 、原始包装器、 BigDecimal等),但LazySeq不允许null元素。 基本...