Một dãy tuyến tính là 1 bộ 3 có thứ tự (s1,s2,s3) thỏa mãn s2-s1=s3-s2
Ví dụ: (1,2,3), (2,4,6), (14,21,28) là các dãy tuyến tính
Cho trước S (3≤S≤30) số nguyên tăng thuộc đọan [1,100], đếm số các dãy tuyến tính
Dữ liệu: Cho trong tập tin văn bản LSEQ.INP, dòng đầu là số nguyên S, dòng tiếp theo là S số nguyên, cách nhau ít nhất 1 khỏang trắng
Kết quả: Cho trong tập tin văn bản LSEQ.OUT, chứa số nguyên duy nhất chỉ số dãy tuyến tính tìm được.
Ví dụ:
LSEQ.INP LSEQ.OUT
7
1 2 3 4 6 8 9 5
Giải thích:
5 dãy tuyến tính tìm được là:
1 2 3
2 3 4
2 4 6
3 6 9
4 6 8
Uses crt;
Trả lờiXóaVar n,i,j,k,d:longint;
f:array[1..30] of longint;
procedure nhap;
Var fi:text;
Begin
assign(fi,'LSEQ.INP');
reset(fi);
read(fi,n);
For i:=1 to n do
read(fi,f[i]);
close(fi);
end;
procedure xuat;
Var fo:text;
Begin
assign(fo,'LSEQ.OUT');
rewrite(fo);
Write(fo,d);
close(fo);
end;
Begin
nhap;
For i:=1 to n-2 do
For j:=i+1 to n-1 do
For k:=j+1 to n do
Begin
If f[k]-f[j]=f[j]-f[i] then d:=d+1;
end;
xuat;
end.
#include <iostream >
Trả lờiXóa#include <algorithm >
#include <fstream >
using namespace std;
int main(int argc, char** argv) {
ifstream cin;
cin.open ("D:/Dong/LSEQinp.txt");
ofstream cout;
cout.open ("D:/Dong/LSEQout.txt");
int s,n[100],d=0;
cin > >s;
for (int i=0;i <s;i++){
cin > >n[i];
}
sort(n,n+s);
for (int i=0;i <s-2;i++){
for (int j=i+1;j <s-1;j++){
for (int k=j+1;k <s;k++){
if (n[k]-n[j]==n[j]-n[i]) d++;
}
}
}
cout < <d;
cin.close();
cout.close();
return 0;
}
Nhận xét này đã bị tác giả xóa.
Trả lờiXóaNhận xét này đã bị tác giả xóa.
Trả lờiXóaNhận xét này đã bị tác giả xóa.
Trả lờiXóaNhận xét này đã bị tác giả xóa.
Trả lờiXóaNhận xét này đã bị tác giả xóa.
Trả lờiXóa#include
Trả lờiXóausing namespace std;
int main()
{
int S,a[40],d=0;
map b;
freopen("LSEQ.INP","r",stdin);
freopen("LSEQ.OUT","w",stdout);
cin >> S;
for (int i=0;i> a[i];
b[a[i]] = "co";
}
for (int i=0;i<S-2;i++){
for (int j=i+1;j<S-1;j++){
if (b[a[j]*2-a[i]]=="co"){
d +=1;
}
}
}
cout << d;
return 0;
}