在C++中查找数字根为X的第N个正数
在这个问题中,我们给出了两个整数值N和X。我们的任务是创建一个程序来找到第N个正数,其数字根是X。
数字根(X)是一个个位数的正数,它是通过将N个数字递归相加得到的,直到和变成个位数。
让我们举个例子来理解这个问题,
输入
N = 5, X = 4输出结果
40
解决方法
解决这个问题的一个简单方法是计算数字根为X的数字。为此,我们将从1开始,然后检查当前数字的数字根是否等于X并计算数字并返回第N个这样的数字。
程序来说明我们的解决方案的工作,
示例
#includeusing namespace std; int calcDigitalRoot(int num) { int digitSum = 1000, number = num; while (digitSum >= 10) { digitSum = 0; while (number > 0) { digitSum += number % 10; number /= 10; } number = digitSum; } return digitSum; } int calcNthDigitalRoot(int X, int N) { int countDigitalRootVals = 0; for (int i = 1; countDigitalRootVals < N; ++i) { int digitalRoot = calcDigitalRoot(i); if (digitalRoot == X) { ++countDigitalRootVals; } if (countDigitalRootVals == N) return i; } return -1; } int main(){ int X = 4, N = 5; cout< 输出结果 5th正数,其数字根为 4 is 40有效的方法
解决该问题的有效方法是使用直接公式找到数字根等于X的第N个数字,即:
Nth number = (N + 1)*9 + X程序来说明我们的解决方案的工作,
示例
#includeusing namespace std; int calcNthDigitalRoot(int X, int N) { int nthNumber = (((N - 1) * 9) + X); return nthNumber; } int main() { int X = 4, N = 12; cout< 输出结果 12th正数,其数字根为 4 is 103