阅读 124

用给定的数字根在范围内查找数字的 C++ 程序

其数字之和可求出一个数的数字根;如果和是一位数,则它是数字根。在本教程中,我们将讨论一个问题,给定一个数字范围和一个整数 X,我们需要计算该范围内有多少个数字具有数字根作为 X,其中 X 是个位数,例如


Input: l = 13, r = 25, X = 4Output: 2Explanation: Numbers in the range (13,25) having digit sum 4 are 13 and 22.Input: l = 11, r = 57Output: 6


寻找解决方案的方法

简单的方法

在一个简单的方法中,我们可以遍历从 l 到 r 的数字并检查其总和是否等于 X。但这会产生时间复杂度,O(N)其中 N 是范围内的总数。

有效的方法

要在数字根为X的范围内查找数字,因此我们需要检查该范围内每个数字的数字总和是否等于K,数字总和始终等于num % 9,如果余数为9为 0,所以如果 X = 9 则将其更改为 0。

求数的个数,将整个范围分成 9 个组。那么每组中将恰好有一个模 9 等于 X 的数字。之后,检查不在组中的被遗漏的数字;分别检查每个数字以满足 num % 9 = X 的条件。

示例

上述方法的 C++ 代码


#include <bits/stdc++.h>#define ll long long intusing 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 << "Total Numbers in a Range( l, r ) with given Digital Root(X) are: " << result;
    return 0;
}

输出结果

Total Numbers in a Range( l, r ) with given Digital Root(X) are: 2


结论

在本教程中,我们讨论了一个数字范围和数字根的问题。我们需要找到所有具有数字根的数字,X.We这是通过将数字分成 9 位数字组来解决此问题的一种简单方法和有效方法。

每组包含一个数字根为 X 的数字。我们还讨论了针对这个问题的 C++ 程序,我们可以使用 C、Java、Python 等编程语言来完成。我们希望本教程对您有所帮助。


文章分类
百科问答
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐