`
peizhyi
  • 浏览: 30392 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

计算数自然数序列中的1和2

阅读更多

问题:

    给定一个自然数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))

 

分享到:
评论

相关推荐

    斯特林数和自然数前m项n次方和

    斯特林数与自然数前m项n次方和的结合,可能会出现在解决更复杂的数学问题中,如计算特定序列的特性或者解决某些组合优化问题。通过理解和掌握这些基本概念,我们可以更好地理解和解决实际问题。

    用JAVA编写求自然数n到m的和

    在编程领域,计算自然数序列的和是一项基础且常见的任务,尤其在学习编程语言时,如Java。这个任务要求我们编写一个程序,能够接收两个自然数n和m(n ),并计算从n到m所有自然数的和。在这个过程中,我们可以运用...

    回溯法 - 输出自然数1到n所有不重复的排列,即n的全排列

    对于本题中的“输出自然数1到n的所有不重复的排列”,回溯法非常适合,因为它能够有效地生成所有可能的排列组合而不产生重复。 ### 问题描述与分析 题目要求输出自然数1到n的所有不重复排列,即n的全排列。具体来...

    一个自然数幂和公式的推导

    在探讨自然数幂和公式推导的过程中,本文章涉及到几个关键的数学概念和方法,包括幂和的概念、递推关系的求解、形式幂级数、生成函数以及递推关系的求解方法。 幂和通常指的是一种求和运算,涉及自然数的连续整数次...

    输出m到n之间所有的自然数的和.zip

    对于连续的自然数序列1到n,其和可以用以下公式表示: \[ S = \frac{n(n + 1)}{2} \] 但是,如果起点不是1,我们需要对这个公式稍作调整。对于m到n的自然数和,我们可以将序列分为两部分:从1到n的和以及从1到m-1...

    pascal取数游戏

    给出2n个(n)个自然数(数小于等于30000)。游戏双方分别为A方(计算机方)和B方(对弈的人)。...a存储2*n个自然数序列;lp,rp为序列的左端位置和右端位置;ch为B方取数的位置信息(‘L’或‘R’);

    五年级数学下册 自然数1教案 沪教版 教案.doc

    在这个过程中,教师会引导学生回顾自然数的概念,从P6的课本内容出发,探讨自然数的起源和发展,如1、2、3等数的计数和编序功能,以及0作为表示“没有”的数的重要性。 教学过程中,教师通过提问引导学生分享他们对...

    算法-连续自然数和(洛谷-P1147)(包含源程序).rar

    例如,如果n=9,k=3,那么连续自然数序列有:1+2+3=6,2+3+4=9。我们需要找出所有这样的序列,并可能以某种形式返回结果,如序列的起始元素或序列本身。 **解决思路:** 这个问题可以通过数学公式简化,连续k个...

    用C语言写的求解自然数e的算法

    通过理解这个简单的循环算法,你不仅能够计算自然数e,还能进一步探索其他数学常数和序列的计算。在实际编程中,可以根据需要调整算法,比如采用更高效的求和方法(如高斯消去法),或者将计算过程并行化以提高计算...

    众数问题 code

    算法设计:对于给定的由n 个自然数组成的多重集S,计算S 的众数及其重数。"&gt;:给定含有n 个元素的多重集合S,每个元素在S 中出现的次数称为该 元素的重数。多重集S 中重数最大的元素成为众数。例如,S={1,2,2,2,3,5}...

    擦数游戏 数据结构课程设计

    一个从1开始的连续自然数序列,例如1, 2, 3, 4, 5...,在某个点会有一个数k被擦去。擦去k后,剩下的数的平均值是a/b的形式,其中a和b是整数。这意味着剩余数的总和(不包括k)除以序列中的元素个数(同样不包括k)...

    计算1^1+2^2+....N^N计算结果支持64位++

    标题中的“计算1^1+2^2+....N^N计算结果支持64位++”涉及的是一个数学问题和编程实现,其中“64位++”可能指的是使用64位整数类型来处理大数值,并且可能用C++语言进行编程。这个计算涉及到序列求和,具体来说是平方...

    自然数n次幂的求和公式及其因式分解的Matlab求解.pdf

    本文中给出了系数矩阵对应n=1-16的条件数,这对于理解求和公式计算过程中数值稳定性和误差分析具有重要意义。 4. 多项式函数求和公式及其因式分解 除了自然数幂和公式之外,本文还将讨论的方法应用于所有的一般...

    自己写的排序,最大公约数,取自然数,zigzag等经典C++算法(内附算法说明)

    这些算法涵盖了排序、计算最大公约数以及生成自然数序列和Zigzag序列等多种常见问题。让我们逐一深入探讨这些算法。 1. **排序算法**:排序是计算机科学中的基本问题,用于组织和整理数据。在提供的压缩包中,可能...

    python 求交错序列前n项和.docx

    这个序列具有交替的正负项,每一项的分子是连续的自然数,分母是分子的两倍减一,即序列可以表示为 1-2/3+3/5-4/7+5/9-6/11+...。 描述中提到的“求交错序列前N项和”进一步明确了问题的核心,即我们需要计算序列的...

    C 代码 评估各种数学函数、多项式和 序列.rar

    3. **序列处理**:序列在数学中通常指的是按照某种规律排列的一系列数,比如自然数序列、斐波那契序列等。在C语言中,可以通过循环结构和递归函数来生成和操作这些序列。例如,编写一个函数生成斐波那契数列,或者一...

    众数众数众数一个集合如果允许存在相同的元素,则称之为多重集合. 多重集 S 中的元素 x 如果恰好在 S 中出现 r 次, 则称 x 是 r 重的, 也称 r 为 x 的重数. 重数最大的元素称为众数. 例如, S = { 1,2,2,2,3,5 } 的众数是 2, 其重数为 3.

    一个集合如果允许存在相同的元素,则称之为多重集合.... 例如, S = { 1,2,2,2,3,5 } 的众数是 2, 其重数为 3. 本题对于给定的由 n 个自然数组成的多重集 S, 编程计算 S 的众数及其重数. Input

    逆序数程序

    例如,在序列`5,3,2,4,1`中,有4个逆序对:`(5,3),(5,2),(5,4),(4,1)`。 逆序数的计算在许多领域都有应用,如排序算法分析、数据分析以及各种数学问题的解决。它可以帮助我们理解数据的分布特性,尤其是在涉及...

    Matlab在研究函数序列收敛性中的应用.pdf

    而一致收敛则要求对于序列中所有函数项,不等式 |fn(x) - f(x)| ε 对任意的ε &gt; 0和所有充分大的n都成立,这里的n是与x无关的自然数。一致收敛的概念比逐点收敛要强,因为它要求收敛的速率是一致的。 Matlab是一种...

    1亿以内的质数(共5761455个数).txt_1亿以内素数的个数

    **质数**(或称为素数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的数。质数是数论中的基本概念之一,在密码学、计算机科学以及其他数学领域都有着广泛的应用。 #### 二、1亿以内质数的数量 根据...

Global site tag (gtag.js) - Google Analytics