Cho dãy A gồm N số nguyên a1,....,an . Tìm giá trị lớn nhất (Max) của dãy nếu có nhiều giá trị lớn nhất hãy đếm số phần tử có giá trị bằng Max và đưa ra phần tử với chị số nhỏ nhất
nêu ý tưởng giải bài toán sau : cho số nguyên N và dãy gồm N số nguyên khác nhau A1,A2,....An hãy đưa ra dãy sau khi đổi chỗ phần tử đầu tiên và phần tử có giá trị lớn nhất cho nhau
#include <bits/stdc++.h>
using namespace std;
long long a[10000],n,i,ln,vt;
int main()
{
cin>>n;
ln=LLONG_MIN;
for (i=1; i<=n; i++)
{
cin>>a[i];
ln=max(ln,a[i]);
}
for (i=1; i<=n; i++)
if (ln==a[i]) vt=i;
swap(a[1],a[vt]);
for (i=1; i<=n; i++)
cout<<a[i]<<" ";
return 0;
}
Nhập vào mảng A gồm n số nguyên (n<=1000), Viết chương trình đưa ra số lớnnhất của mảng và chỉ số của phần tử lớn nhất đó. Nếu có nhiều số có cùng giá trị lớnnhất thì đưa ra phần tử có chỉ số nhỏ nhất.Ví dụ n=7, dãy là 7 9 20 7 8 20 1Phân tử lớn nhất có giá trị là 20 và ở vị trí số 3. (vị trí số 6 cũng có giá trị 20 nhưng takhông lấy vì ta cần lấy phần tử có chỉ số nhỏ nhất).
uses crt;
var a,b,c:array[1..1000]of integer;
i,n,dem,max:integer;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
dem:=0;
max:=a[1];
for i:=1 to n do
if max<a[i] then max:=a[i];
for i:=1 to n do
if max=a[i] then
begin
inc(dem);
b[dem]:=a[i];
c[dem]:=i;
end;
if dem=1 then writeln('So lon nhat la: ',b[dem],' vi tri la: ',c[dem])
else writeln('So lon nhat la: ',b[1],' vi tri la: ',c[1]);
readln;
end.
uses crt;
var a:array[1..100]of integer;
i,n,min,dem: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];
dem:=0;
for i:=1 to n do
if min=a[i] then inc(dem);
writeln('So phan tu co gia tri nho nhat trong day la: ',dem);
readln;
end.
Mọi người làm nhanh hộ ạ, em đang cần gấp ạ, phiền mọi người ạ
uses crt;
var a:array[1..100]of integer;
i,n,min,dem: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];
dem:=0;
for i:=1 to n do
if min=a[i] then inc(dem);
writeln('So phan tu co gia tri nho nhat trong day la: ',dem);
readln;
end.
Bài tập 2. Viết chương trình nhập vào 1 dãy gồm n số nguyên. In dãy vừa nhập và đưa ra phần tử có giá trị lớn nhất và nhỏ nhất của mảng.
Uses crt;
var n,i,max,min: integer;
a: array[1..100] of longint;
begin clrscr;
readln(n);
for i:=1 to n do read(a[i]); readln;
max:=a[1];
for i:=1 to n do if(max<a[i]) then max:=a[i];
writeln(max);
min:=a[1];
for i:=1 to n do if(min>a[i]) then min:=a[i];
writeln(min);
readln;
end.
SWAP X
Bạn được cho hai dãy số nguyên dương aa và bb gồm nn phần tử mỗi mảng. Bạn được phép thực hiện thao tác này nhiều lần:
Chọn 1 số nguyên ii bất kỳ (1≤i≤n) và tráo đổi 2 phần tử a[i] và b[i].
Yêu cầu: Tìm giá trị nhỏ nhất có thể của max(a1,a2,...,an)⋅max(b1,b2,...,bn)sau khi bạn thực hiện thao tác trên 1 hoặc nhiều lần.
Dữ liệu:
Dòng đầu ghi t thể hiện số testcase, t≤100.
t block tiếp theo, mỗi block có dạng:
Dòng đầu ghi số nguyên dương n (n≤104).
Dòng thứ hai ghi nn số nguyên dương a1,a2,...,an (ai≤106)
Dòng thứ ba ghi nn số nguyên dương b1,b2,...,bn(bi≤106).
Kết quả:
Ứng với mỗi testcase, in ra kết quả cần tìm.
input
3
6
1 2 6 5 1 2
3 4 3 2 2 5
3
3 3 3
3 3 3
2
1 2
2 1
output
18
9
2
Ý tưởng: Tìm số lớn nhất trong hai dãy đã cho. Không mất tính tổng quát, giả sử số lớn nhất của 2 dãy nằm trong dãy a, ta xét các số trong dãy b, tại vị trí i: nếu a[i] < b[i] thì hoán vị a[i] và b[i]. Sau đó tìm số lớn nhất trong dãy b rồi nhân với số lớn nhất của hai dãy sẽ ra được kết quả.
#include <iostream>
using namespace std;
#define maxN 105
int main() {
int a[maxN], b[maxN];
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
int maxA = 0, maxB = 0;
for (int i = 0; i < n; i++)
{
cin >> a[i]; maxA = max(a[i], maxA);
}
for (int i = 0; i < n; i++)
{
cin >> b[i]; maxB = max(b[i], maxB);
}
if (maxA < maxB)
swap(a, b);
int maxV = max(maxA, maxB);
for (int i = 0; i < n; i++)
if (b[i] > a[i])
swap(b[i], a[i]);
maxB = 0;
for (int i = 0; i < n; i++)
maxB = max(b[i], maxB);
cout << maxB * maxV << endl;
}
return 0;
}
Cho dãy A gồm N số nguyên có giá trị a1, a2, …,an và 1 số nguyên k. Hãy đếm xem trong dãy A có bao nhiêu phần tử bằng k
program Tin_hoc;
Uses crt;
var i,n,k,dem:integer;
a;array[1..10000] of integer;
Begin
clrscr;
write('Nhap n: ');readln(n);
writeln('Nhap ',n,' pha tu cua day A:');
for i:= 1 to n do readln(a[i]);
dem:=0;
write('Nhap k: ');readln(k);
for i:= 1 to n do if a[i] = k then inc(dem);
writeln('Day A co ',dem,' ki tu ',k,);
readln;
end.
Cho dãy A gồm n số nguyên (n>0), các phần tử của dãy số lần lượt có giá trị A1, A2,….,An. Hãy đếm xem trong dãy A có bao nhiêu phần tử có giá trị là 50
a. Xác định bài toán
b. Xây dựng thuật toán
#include <bits/stdc++.h>
using namespace std;
long long n,i,x,dem;
int main()
{
cin>>n;
dem=0;
for (i=1; i<=n; i++)
{
cin>>x;
if (x==50) dem++;
}
cout<<dem;
return 0;
}
Trình bày các bước giải bài toán sau:
Cho số nguyên N và dãy A1,A2.....AN
Hãy tìm và đưa ra vị trí của phần tử có giá trị lớn nhất.
#include <bits/stdc++.h>
using namespace std;
long long a[10000],n,i,ln;
int main()
{
cin>>n;
ln=LLONG_MIN;
for (i=1; i<=n; i++)
{
cin>>a[i];
ln=max(ln,a[i]);
}
for (i=1; i<=n; i++)
if (ln==a[i]) cout<<i<<" ";
return 0;
}
Cho một dãy số nguyên A gồm N phần tử A1, A2,…, AN và hai số nguyên dương U, V (1 ≤ U ≤ V ≤ N). Hãy tìm một đoạn con liên tiếp của dãy A có tổng các phần tử đạt giá trị lớn nhất và độ dài là D tùy ý với U ≤ D ≤ V. (Độ dài của đoạn con là số lượng phần tử trên đoạn con đó).
input out
5 1
2 3 -4 3 -2 -6 5
giúp em với c++ ạ