Run ID:113281

提交时间:2025-03-15 16:29:21

#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; }