Cho dãy số gồm 2015 số nguyên dương đc sắp xếp như sau : a1;a2;a3;...;a2015 . chứng tỏ rằng luôn tìm đc ở dãy số trên có một số hoặc tổng 1 số số chia hết cho 2015.
a1 tưc là số a thứ 1 nhé ,
Cho dãy số gồm 2015 số nguyên dương đc sắp xếp như sau : a1, a2 ...a2015 . Chứng tỏ rằng luôn tìm được ở dãy số trên 1 số hoặc tổng của 1 số số chia hết cho 2015. ( a1 là số a thứ 1 nhé)
Ta có 15 = 1 + 2 + 3 + 4 + 5
Vì a1 là số nguyên dương nên \(a_1+a_2\ge3\)điều trên xảy ra khi \(a_1=1\)và \(a_2=a_1+1\)
Tương tự với \(a_1+a_2+a_3+a_4+a_5=a_1+\left(a_1+1\right)+...+\left(a_1+a_4\right)\)
\(=5a_1+10⋮15\)
Theo nguyên lý Dirichlet thì trong 2015 số nguyên dương sẽ tồn tại ít nhất 134 số chia hết cho 15 nếu \(a_1=15\)
Nếu các số nguyên dương trên có giá trị tương đương nhau thì \(a_1+a_2+...+a_{2015}=2015a_n\)
Vậy trong nguyên lý Dirichlet thì có thể tồn tại ít nhất 134 cặp số có tổng chia hết cho 15 với \(a_n\)nhỏ nhất là 1
Làm lại
Ta thấy rằng nếu tồn tại một số \(a_n\)nào đó chia hết cho 15 thì bài toán được chứng minh (hoặc\(b_i\left(i=1,2,3,...,15\right)\)
Ta lập tổng : \(S_1=a_1\)
\(S_2=a_1+a_2\)
...
\(S_{2015}=a_1+a_2+...+a_{2015}\)
Lấy 15 số hạng bất kỳ ta có : Nếu không tồn tại số bi(i=1,2,3,...,15) chia hết cho 15 thì đem tất cả các số b1 chia cho 15 sẽ được số dư từ 1-15 trong khi đó từ 1 tới 2015 có 2015 số,theo nguyên lý dirichlet tồn tại ít nhất hai số có cùng số dư => có hiệu chia hết cho 15
Bài 1. Cho dãy số a1,a2,...an. Sắp xếp thành dãy giảm dần Bài 2. Cho dãy a1,a2,a3...an gồm n số nguyên dương. -Sắp xếp các số chẵn về đầu hàng tăng dần -Sắp xếp các số lẻ về cuối hàng giảm dần GIÚP EM VỚI Ạ :(((
Bài 1:
#include <bits/stdc++.h>
using namespace std;
long long a[100],n,i,j,tam;
int main()
{
cin>>n;
for (i=1; i<=n; i++)
cin>>a[i];
for (i=1; i<=n-1; i++)
for (j=i+1; j<=n; j++)
if (a[i]<a[j]) swap(a[i],a[j]);
for (i=1; i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
program so_lon_nhat;
uses crt;
var a: array[1..100] of integer;
i,n,max,k,dem: integer;
s,tbc: real;
begin
clrscr;
writeln(' nhap so phan tu cua day'); readln(n);
for i:=1 to n do
begin
writeln('a[',i,']'); readln(a[i]);
end;
writeln(' nhap so can tim:'); readln(k);
max:=a[1];
i:=1;
dem:=0;
for i:=1 to n do
begin
if max<a[i] then max:=a[i];
s:=s+a[i];
tbc:=s/n;
if a[i]=k then dem:=dem+1;
end;
writeln(' so lon nhat trong day tren la:',max);
while (i<n) and (a[i]<>k) do i:=i+1;
if a[i]=k then writeln(' phan tu thu ', i ,' bang ',k)
else writeln(' k tim dc phan tu',k);
writeln(tbc:6);
writeln('co', dem, ' phan tu', k);
readln
end.
Viết chương trình nhập từ bàn phím số nguyên dương N (N<=100) và dãy A gồm N số nguyên A1, A2, …AN. Tìm và in ra số nhỏ nhất của dãy số vừa nhập? Sắp xếp dãy số A theo thứ tự giảm dần và in ra màn hình. Input: Số nguyên dương N và dãy số A gồm N số nguyên dương a1, a2, …, an. Output: In ra Phần tử nhỏ nhất của dãy số đó. Sắp xếp dãy số A theo thứ tự giảm dần và in ra màn hình.
uses crt;
var a:array[1..100]of integer;
i,n,min,tam,j:integer;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
min:=a[1];
for i:=1 to n do
if min>a[i] then min:=a[i];
writeln('Gia tri nho nhat la: ',min);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]<a[j] then
begin
tam:=a[i];
a[i]:=a[j];
a[j]:=tam;
end;
for i:=1 to n do write(a[i]:4);
readln;
end.
Cho dãy a gồm n số nguyên a1..an. Sắp xếp dãy a theo chiều không tăng. In dãy vừa sắp xếp ra màn hình
Cho dạy B gồm 10 số nguyên tử a1 đến a10 gồm các số hạng 4, 71, 3, 40, 50, 9, 8, 7,1. Hãy sử dụng thuật toán sắp xếp bảng cách tráo đổi để sắp xếp dãy B thành dãy giảm
#include <bits/stdc++.h>
using namespace std;
long long b[10],i,j,n;
int main()
{
n=10;
for (i=1; i<=n; i++)
cin>>b[i];
for (i=1; i<=n-1; i++)
for (j=i+1;j<=n;j++)
if (b[i]<=b[j]) swap(b[i],b[j]);
for (i=1; i<=n; i++)
cout<<b[i]<<" ";
return 0;
}
Cho dãy số a1,a2,...an(a<10*,0<n<=50)
1, Tính tổng các số chẵn.
2, Tính tổng các số lẻ.
3, Tính tổng các số nguyên âm.
4, Tính tổng các số nguyên dương.
5, Tính tổng các số S=a1+a2-a3+a4+a5-a6.
6, Sắp xếp mảng tăng dần.
7, Sắp xếp mảng giảm dần.
8, Tìm Max,Min.
9, Tìm số chẵn lớn nhất, số lẻ nhỏ nhất.
10, Tìm số nguyên âm lớn nhất, số nguyên dương nhỏ nhất.
11, Tìm và in ra các số nguyên tố.
12, Tìm và in ra các số chính phương.
13, Tìm và in ra các số chẵn,lẻ.
14, Tìm và in ra các số hoàn chỉnh
Ai rảnh hoặc biết làm cái bài này thì làm hộ mình theo pascan với vì thật sự mình ko biết làm.
Đúng là anh thành sứt, lên đây hỏi ạ.
Sắp xếp dãy số Tên chương trình: sorting.pas
Cho dãy N số nguyên a1, a2,..., an. Hãy sắp dãy số đã cho theo thứ tự tăng dần các số lẻ
và giảm dần các số chẵn?
Dữ liệu vào: File sorting.inp gồm hai dòng
+ Dòng 1: ghi số nguyên N (0< N<1000)
+ Dòng 2: ghi N số a1, a2,...< aN (với ai <=109
)
Dữ liệu ra: File sorting.out gồm hai dòng
+ Dòng 1: Ghi các số lẻ tăng dần
+ Dòng 2: ghi các số chẵn giảm dần
Ví dụ:
Sorting.inp Sorting.out
6
2 3 5 1 4 6
1 3 5
6 4 2
Dưới đây là mã chương trình Pascal để sắp xếp dãy số theo yêu cầu đã cho:
```pascal
program sorting;
const
MAX_N = 1000;
var
N, i, j, temp: integer;
arr: array[1…MAX_N] of integer;
oddArr, evenArr: array[1…MAX_N] of integer;
oddCount, evenCount: integer;
inputFile, outputFile: text;
begin
// Mở file input và đọc dữ liệu
assign(inputFile, 'sorting.inp');
reset(inputFile);
readln(inputFile, N);
for i := 1 to N do
read(inputFile, arr[i]);
close(inputFile);
// Sắp xếp mảng theo yêu cầu
oddCount := 0;
evenCount := 0;
for i := 1 to N do
begin
if arr[i] mod 2 = 1 then
begin
oddCount := oddCount + 1;
oddArr[oddCount] := arr[i];
end
else
begin
evenCount := evenCount + 1;
evenArr[evenCount] := arr[i];
end;
end;
// Sắp xếp mảng số lẻ tăng dần
for i := 1 to oddCount - 1 do
for j := i + 1 to oddCount do
if oddArr[i] > oddArr[j] then
begin
temp := oddArr[i];
oddArr[i] := oddArr[j];
oddArr[j] := temp;
end;
// Sắp xếp mảng số chẵn giảm dần
for i := 1 to evenCount - 1 do
for j := i + 1 to evenCount do
if evenArr[i] < evenArr[j] then
begin
temp := evenArr[i];
evenArr[i] := evenArr[j];
evenArr[j] := temp;
end;
// Mở file output và ghi kết quả
assign(outputFile, 'sorting.out');
rewrite(outputFile);
for i := 1 to oddCount do
write(outputFile, oddArr[i], ' ');
writeln(outputFile);
for i := 1 to evenCount do
write(outputFile, evenArr[i], ' ');
close(outputFile);
end.
```
Bạn có thể sao chép mã chương trình trên vào một tệp tin có tên `sorting.pas`, sau đó tạo một tệp tin `sorting.inp` và nhập dữ liệu theo định dạng đã cho. Chạy chương trình và kết quả sẽ được ghi vào tệp tin `sorting.out`.
var i,n:longint; a:array[1..1000] of longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do
if a[i] mod 2=0 then
begin
inc(k);
b[k]:=a[i];
end
else
begin
inc(t);
c[t]:=a[i];
end;
for i:=1 to k-1 do
for j:=i+1 to k do
if b[i]<b[j] then
begin
d:=b[i];
b[i]:=b[j];
b[j]:=d;
end;
for i:=1 to t-1 do
for j:=i+1 to t do
if c[i]>c[j] then
begin
d:=c[i];
c[i]:=c[j];
c[j]:=d;
end;
for i:=1 to k do write(b[i],' ');
for i:=1 to t do write(c[i],' ');
end.
a)
Input: Dãy n số nguyên
Output: Đếm xem trong dãy đó có bao nhiêu số nguyên dương
b)
Bước 1: Nhập n và nhập dãy số
Bước 2: dem←0; i←1;
Bước 3: Nếu a[i]>0 thì dem←dem+1;
Bước 4: i←i+1;
Bước 5: Nếu i<=n thì quay lại bước 3
Bước 6: Xuất dem
Bước 7: Kết thúc
Input: Số nguyên N và dãy a1,a2,...,aN
Output: Số số nguyên có trong dãy
Thuật toán:
- Bước 1: Nhập N và dãy a1,a2,...,aN
- Bước 2: d←0; i←1;
- Bước 3: Nếu i>N thì in ra có d số dương trong dãy và kết thúc
- Bước 4: Nếu ai > 0 thì d←d+1;
- Bước 5: i←i+1, quay lại bước 3