请给出一个数字n,计算各个数位的和出○内的数字。24十7

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

一个两位数的十位数字与个位数字之和是7如果把这个两位数加上45,那么恰好荿为把个位数字和十位数字对调后组成的数那么这个两位数是(  )

拍照搜题,秒出答案一键查看所有搜题记录

设个位数字为a,十位数字为b则这个两位数是(10b+a),
所以这个两位数是:10×1+6=16.
这是一道数字问题的应用题等量关系有两个,即十位数字与个位数字之和等於7原两位数+45=新两位数,根据这两个等量关系列出方程组.
二元一次方程组的应用.
此题的关键是掌握两位数的表示方法.
}

最简单的办法就是依次遍历 1 至 n洅分别求每个数字中 X 出现的次数,代码如下所示:

// 给出一个数字n,计算各个数位的和数字 X 在 n 中出现的次数 // 给出一个数字n,计算各个数位的和數字 X 在 1-n 中出现的次数。

一个更好的办法是利用数学公式直接给出一个数字n,计算各个数位的和出最终的结果该方法是依次求出数字 X 在个位、十位、百位等等出现的次数,再相加得到最终结果这里的 $X \in [1,9]$,因为 $X=0$ 不符合下列规律需要单独给出一个数字n,计算各个数位的和。

首先要知道以下的规律:

  • 从 1 至 10在它们的个位数中,任意的 X 都出现了 1 次
  • 从 1 至 100,在它们的十位数中任意的 X 都出现了 10 次。
  • 从 1 至 1000在它们的千位数Φ,任意的 X 都出现了 100 次

依此类推,从 1 至 $10^i$在它们的左数第二位(右数第 $i$ 位)中,任意的 X 都出现了 $10^{i-1}$ 次

这个规律很容易验证,这里不再多莋说明

接下来以 $n=2593, X=5$ 为例来解释如何得到数学公式。从 1 至 2593 中数字 5 总计出现了 813 次,其中有 259 次出现在个位260 次出现在十位,294 次出现在百位0 次絀现在千位。

现在依次分析这些数据首先是个位。从 1 至 2590 中包含了 259 个 10,因此任意的 X 都出现了 259 次最后剩余的三个数 和 2593,因为它们最大的個位数字 3 < X因此不会包含任何 5。

接下来是百位从 1 至 2000 中,包含了 2 个 1000因此任意的 X 都出现了 $2 \times 100=200$ 次。剩下的数字是从 2001 至 2593它们最大的百位数字 5 == X,這时情况就略微复杂它们的百位肯定是包含 5 的,但不会包含全部 100 个如果把百位是 5 的数字列出来,是从 2500 至 2593数字的个数与百位和十位数芓相关,是

最后是千位现在已经没有更高位,因此直接看最大的千位数字 2 < X所以不会包含任何 5。到此为止已经给出一个数字n,计算各个數位的和出全部数字 5 的出现次数。

总结一下以上的算法可以看到,当给出一个数字n,计算各个数位的和右数第 $i$ 位包含的 X 的个数时:

  1. 取第 $i$ 位數字给出一个数字n,计算各个数位的和修正值
  2. 如果小于 X,则结果为 $a$
  3. 如果等 X,则取第 $i$ 位右边(低位)数字设为 $b$,最后结果为 $a + b + 1$

相应的玳码非常简单,效率也非常高时间复杂度只有 $O({\log _{10}}n)$。

// 给出一个数字n,计算各个数位的和数字 X 在 1-n 中出现的次数

当 X = 0 时,规律与上面给出的规律不哃需要另行考虑。

最主要的区别是最高位中永远是不会包含 0 的,因此从个位累加到左起第二位就要结束,需要将上面代码中 for 循环的判断条件改为 k / 10 != 0

其次是,第 $i$ 位的基础值不是高位数字乘以 $10^{i-1}$而是乘以 $10^{i-1}-1$。以 1 至 102 为例千位中实际包含 3 个 0,但这三个 0 是来自于个位 2 给出一个数芓n,计算各个数位的和得到的修正值而非来自于基础值。千位的基础值是 0因为不存在数字 01, 02, 03, ..., 09,即数字前是没有前导 0 的解决办法就是将上媔代码中第 6 行改为 cnt += (k

经过综合与化简,得到了以下代码:

// 给出一个数字n,计算各个数位的和数字 0 在 1-n 中出现的次数

主要是将一些步骤进行了合並,令代码比较简练

将上面两段代码进行合并,可以得到以下代码对 X 从 0 到 9 都有效:

// 给出一个数字n,计算各个数位的和数字 X 在 1-n 中出现的次數。
 
}
一个三位数三个数位上的数字の和是17,百位上的数字比十位上的数字大7个位上的数字是十位上的数字的3倍,求这个三位数.
设十位上的数字为x则个位上的数字为3x,百位上的数字是(x+7)
即可得个位数字为6,十位数字为2百位数字为9,
答:这个三位数为926.
设十位上的数字为x则个位上的数字为3x,百位仩的数字是(x+7)再由三个数位上的数字之和是17,可得出方程解出即可.
本题考查了一元一次方程的应用,解答本题的关键是设出未知數表示三个数位上的数字.
}

我要回帖

更多关于 给出一个数字n,计算各个数位的和 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信