Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
113281 彭士宝 22第n项的数 C++ Accepted 1 MS 272 KB 1456 2025-03-15 16:29:21

Tests(5/5):


Code:

#include <iostream> #include <vector> #include <cmath> // 用于判断浮点数相等 using namespace std; // 判断两个浮点数是否相等 bool isEqual(double a, double b) { return abs(a - b) < 1e-6; } int main() { int n; cin >> n; // 输入n vector<int> nums(4); for (int i = 0; i < 4; i++) { cin >> nums[i]; // 输入前四项 } int result = 0; // 判断是否为等差数列 int diff1 = nums[1] - nums[0]; int diff2 = nums[2] - nums[1]; int diff3 = nums[3] - nums[2]; if (diff1 == diff2 && diff2 == diff3) { // 是等差数列 result = nums[0] + (n - 1) * diff1; } else { // 判断是否为等比数列 double ratio1 = static_cast<double>(nums[1]) / nums[0]; double ratio2 = static_cast<double>(nums[2]) / nums[1]; double ratio3 = static_cast<double>(nums[3]) / nums[2]; if (isEqual(ratio1, ratio2) && isEqual(ratio2, ratio3)) { // 是等比数列 result = nums[0] * static_cast<int>(pow(ratio1, n - 1)); } else { // 如果既不是等差数列也不是等比数列,输出错误(题目保证数据一定符合等差或等比) cout << "Error: Data does not form an arithmetic or geometric sequence." << endl; return 1; } } // 输出第n项 cout << result << endl; return 0; }