C++ 中 n^x 的递归数字和,其中 n 和 x 非常大
给定正整数变量 ‘num’ 和 ‘x’。任务是递归计算 num ^ x,然后将结果数字相加,直到得到个位数,该个位数即为输出。
让我们看看各种输入输出场景:
输入 - int num = 2345, int x = 3
输出 - n^x 的递归数字和,其中 n 和 x 非常大,结果是:8
解释 - 给定正整数 num 和 x,其值为 2345 和幂为 3。首先,计算 2345 ^ 3,即 12,895,213,625。现在,我们将这些数字相加,即 1 + 2 + 8 + 9 + 5 + 2 + 1 + 3 + 6 + 2 + 5 = 44。现在我们将 4 + 4 = 8。由于我们得到了个位数,因此输出为 8。
输入 - int num = 3, int x = 3
输出 - n^x 的递归数字和,其中 n 和 x 非常大,结果是:9
解释 - 给定正整数 num 和 x,其值为 3 和幂为 3。首先,计算 3 ^ 3,即 9。由于我们得到了个位数,因此输出为 9,无需进一步计算。
下面程序中使用的步骤如下:
输入整数变量 num 和 x,并将数据传递给函数 Recursive_Digit(num, x) 进行进一步处理。
在函数 Recursive_Digit(num, x) 内部:
声明变量 ‘total’ 为长整型,并将其设置为调用函数 total_digits(num),该函数将返回作为参数传递的数字的数字和。
声明变量 temp 为长整型,并将其设置为 power % 6。
检查 IF total = 3 或 total = 6 且 power > 1,则返回 9。
否则如果 power = 1,则返回 total。
否则如果 power = 0,则返回 1。
否则如果 temp - 0,则返回对 total_digits((long)pow(total, 6)) 的调用。
否则,返回 total_digits((long)pow(total, temp))。
在函数 long total_digits(long num) 内部:
检查 IF num = 0,则返回 0。检查 IF num % 9 = 0,则返回 9。
否则,返回 num % 9。
示例
#include <bits/stdc++.h>
using namespace std;
long total_digits(long num){
if(num == 0){
return 0;
}
if(num % 9 == 0){
return 9;
}
else{
return num % 9;
}
}
long Recursive_Digit(long num, long power){
long total = total_digits(num);
long temp = power % 6;
if((total == 3 || total == 6) & power > 1){
return 9;
}
else if (power == 1){
return total;
}
else if (power == 0){
return 1;
}
else if (temp == 0){
return total_digits((long)pow(total, 6));
}
else{
return total_digits((long)pow(total, temp));
}
}
int main(){
int num = 2345;
int x = 98754;
cout<<"Recursive sum of digit in n^x, where n and x are very large are: "<<Recursive_Digit(num, x);
return 0;
}输出
如果我们运行上述代码,它将生成以下输出
Recursive sum of digit in n^x, where n and x are very large are: 1
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP