Kiểm tra một dãy số nguyên có là dãy cấp số cộng hay không
Submit solution
Points:
1
Time limit:
1.0s
Memory limit:
977M
Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG
Cho dãy số nguyên gồm n phần tử \(a_1,a_2,...,a_n\) dãy được gọi là cấp số cộng nếu \( a_2-a_1 = a_3-a_2 = a_4-a_3 = ... =a_n - a_{n-1} \) bằng hằng số d gọi là công sai
Bài toán đặt ra là bạn kiểm tra một dãy cho trước có phải là dãy cấp số cộng với một công sai nào đó không biết rằng công sai có thể âm, có thể bằng 0 hoặc dương
Input
Dòng đầu là số nguyên n \((3<=n<=1000)\) là số phần tử của dãy
Dòng tiếp theo chứa n số nguyên có giá trị tuyệt đối không vượt quá \(10^4\)
Output
Nếu dãy là cấp số cộng hãy xuất ra "Day la day cap so cong voi cong sai d" trong đó d là công sai của dãy
Nếu dãy không là cấp số cộng xuất ra "Day khong la day cap so cong"
Ví dụ 1
Input
5
3 4 5 6 7
Output
Day la day cap so cong voi cong sai 1
Ví dụ 2
Input
5
5 3 1 -1 -3
Output
Day la day cap so cong voi cong sai -2
Ví dụ 3
Input
5
1 2 3 5 4
Output
Day khong la day cap so cong
Comments
include<iostream>
include<math.h>
using namespace std; bool csc(int a[], int n){ if(n < 2){ return false ; } int d = a[1] - a[0]; for(int i = 2 ; i < n ; i++){ if(a[i] - a[i - 1] != d){ return false; } } return true ; } int main(){ int n ; cin >> n; int a[n]; for(int i = 1 ; i < n; i++){ cin >> a[i];
} if(csc(a, n)){ cout << "YES" << endl; } else { cout << "NO" << endl; } return 0; }
nhầm lẫn