C++ 程序根据给定的数字根查找一定范围内的数字
c++server side programmingprogramming
通过数字之和可以求出一个数的数字根;如果和为一位数,则为数字根。在本教程中,我们将讨论这样一个问题:给定一个数字范围和一个整数 X,我们需要计算该范围内有多少个数字具有数字根,例如 X 为一位数
输入:l = 13,r = 25,X = 4 输出:2 解释:在 (13,25) 范围内,数字和为 4 的数字有 13 和 22。 输入:l = 11,r = 57 输出:6
寻找解决方案的方法
简单方法
在一种简单的方法中,我们可以遍历从 l 到 r 的数字并检查其和是否等于 X。但这将产生 O(N) 的时间复杂度,其中 N 是范围内的总数。
高效方法
要查找数字根为 X 的范围内的数字,我们需要检查范围内每个数字的数字总和是否等于 K,数字总和始终等于 num % nine,余数为 0 时为 9,因此如果 X = 9,则将其更改为 0。
要查找数字的数量,请将整个范围分成 9 个组。然后,每个组中将恰好有一个数字,其模 9 将等于 X。之后,检查不在组中的遗漏数字;分别检查每个数字是否满足 num % 9 = X 的条件。
示例
上述方法的 C++ 代码
#include <bits/stdc++.h> #define ll long long int using namespace std; int main(){ int l = 13; int r = 25; int X = 4; if (X == 9) X = 0; // 计算范围内的所有数字 int total = r - l + 1; // 将数字分成最多 9 组 int groups = total/ 9; // 因为对于 N 组,将有 N 个数字模 9 等于 X。 int result = groups; // 检查所有遗漏的数字 int left_out = total % 9; // 分别检查每个遗漏的数字是否符合条件。 for (int i = r; i > r - left_out; i--) { int rem = i % 9; if (rem == X) result++; } cout << "给定数字根(X)的范围(l,r)中的数字总数为:<<result; return 0; }
输出
给定数字根 (X) 的范围 (l, r) 中的数字总数为:2
结论
在本教程中,我们讨论了一个数字范围和数字根的问题。我们需要找到所有数字根为 X 的数字。我们讨论了一种简单方法和一种有效的方法来解决这个问题,即将数字分成 9 位数字的组。
每组包含一个数字根为 X 的数字。我们还讨论了这个问题的 C++ 程序,我们可以使用 C、Java、Python 等编程语言来完成。我们希望本教程对您有所帮助。