C++程序:将整数表示为唯一自然数n次幂之和的方法
本文将讨论一个程序,该程序用于查找将整数(例如 X)表示为唯一自然数 n 次幂之和的方法。
例如,令 X = 100,n = 2
则有 3 种方法可以将 100 表示为自然数的平方和。
100 = 102 100 = 62 + 82 100 = 12 + 32 + 42 + 52 + 72
这可以通过递归轻松完成。我们将从 1 开始,一直到给定数字的 n 次方根。在每次运行中,我们将从给定数字中减去自然数的 n 次幂(从 1 开始),直到数字小于 0。这将给出该数字可以表示为自然数 n 次幂之和的方法。
示例
#include<iostream>
#include <math.h>
using namespace std;
int result = 0;
int ways(int number, int a, int init, int n){
if (a == 0) {
result++;
}
//setting the higher limit
int max = (int)floor(pow(number, 1.0 / n));
for (int i = init + 1; i <= max; i++) {
//subtracting n-th power values starting from 1
int b = a - (int)pow(i, n);
if (b >= 0)
ways(number, a - (int)pow(i, n), i, n);
}
return result;
}
int main() {
int a = 100, n = 2;
cout << ways(a, a, 0, n);
return 0;
}输出
3
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP