写一个C++程序,计算1/1^m+1/2^m+1/3^m+……+1/n^m数值。输入值为n和m。其中,n代表相加数的个数,m代表分母的幂次。其中n和m都为正整数。输出一个double类型的浮点数。
时间: 2024-12-27 09:31:04 浏览: 2
要编写一个C++程序来计算这个序列,你可以使用动态规划的思想,因为每个项 `1/i^m` 可以通过累加前一项来计算,避免了重复计算。下面是一个简单的示例:
```cpp
#include <iostream>
#include <cmath>
double calculateSum(int n, int m) {
if (n <= 0 || m <= 0) {
std::cerr << "Invalid input! Both n and m must be positive integers." << std::endl;
return 0;
}
double sum = 0.0;
for (int i = 1; i <= n; ++i) {
sum += pow(1.0 / static_cast<double>(i), m); // 使用pow函数防止整数溢出
}
return sum;
}
int main() {
int n, m;
std::cout << "Enter the value of n: ";
std::cin >> n;
std::cout << "Enter the value of m: ";
std::cin >> m;
double result = calculateSum(n, m);
std::cout << "The sum is: " << result << std::endl;
return 0;
}
```
在这个程序中,用户需要输入n和m的值,然后计算表达式的和。注意我们使用`pow`函数来计算 `1/i^m` 的值,并将结果转换成`double`类型以得到精确的结果。
阅读全文