K
Khách

Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.

27 tháng 2 2023

var A:

     array[1..n] of int64;

     i, n, count: integer;

begin

     write('Nhap so phan tu cua mang: ');

     readln(n);

     for i := 1 to n do

     begin

          write('Nhap phan tu thu ', i, ': ');

          readln(A[i]);

      end;

 

     count := 0;

     for i := 1 to n do

          if A[i] > 0 then

               count := count + 1;

     writeln('So luong cac so nguyen duong trong mang la: ', count); end.

7 tháng 10 2025
Bài toán yêu cầu tìm cách biểu diễn một số nguyên dương nn𝑛thành tổng của các số nguyên dương khác nhau sao cho tích của các số hạng là lớn nhất.
Để tích của các số hạng là lớn nhất, ta nên chọn các số hạng nhỏ nhất có thể, bắt đầu từ 2, 3, 4,...
Ta sẽ chọn các số hạng liên tiếp bắt đầu từ 2, cho đến khi tổng của chúng gần bằng nn𝑛.
Giả sử ta chọn các số hạng là 2,3,4,...,k2 comma 3 comma 4 comma point point point comma k2,3,4,...,𝑘. Tổng của chúng là (2+k)(k−1)2the fraction with numerator open paren 2 plus k close paren open paren k minus 1 close paren and denominator 2 end-fraction(2+𝑘)(𝑘−1)2.
Nếu n−∑i=2ki=0n minus sum under-script i equals 2 over-script k end-scripts i equals 0𝑛−𝑘𝑖=2𝑖=0, thì ta đã tìm được cách biểu diễn.
Nếu n−∑i=2ki>0n minus sum under-script i equals 2 over-script k end-scripts i is greater than 0𝑛−𝑘𝑖=2𝑖>0, ta sẽ phân bổ phần dư này cho các số hạng đã chọn, bắt đầu từ số hạng lớn nhất.
Step 2: Thuật toán
  1. Khởi tạo danh sách các số hạng terms rỗng.
  2. Khởi tạo sum_terms = 0current_num = 2.
  3. Lặp lại cho đến khi sum_terms + current_num > n:
    • Thêm current_num vào terms.
    • Cộng current_num vào sum_terms.
    • Tăng current_num lên 1.
  4. Tính phần dư remainder = n - sum_terms.
  5. Phân bổ phần dư remainder cho các số hạng trong terms:
    • Lặp lại từ cuối danh sách terms về đầu:
      • Nếu remainder > 0:
        • Tăng số hạng hiện tại lên 1.
        • Giảm remainder đi 1.
      • Nếu remainder == 0, dừng vòng lặp.
  6. Sắp xếp các số hạng trong terms theo thứ tự tăng dần.
Step 3: Ví dụ với n=10n equals 10𝑛=10
  1. Khởi tạo terms = [], sum_terms = 0, current_num = 2.
  2. sum_terms + 2 = 2 <= 10. terms = [2], sum_terms = 2. current_num = 3.
  3. sum_terms + 3 = 5 <= 10. terms = [2, 3], sum_terms = 5. current_num = 4.
  4. sum_terms + 4 = 9 <= 10. terms = [2, 3, 4], sum_terms = 9. current_num = 5.
  5. sum_terms + 5 = 14 > 10. Dừng lại.
  6. Phần dư remainder = 10 - 9 = 1.
  7. Phân bổ phần dư:
    • Số hạng cuối cùng là 4. Tăng lên 1 thành 5. remainder = 0.
    • Danh sách số hạng mới là [2, 3, 5].
  8. Kiểm tra: 2 + 3 + 5 = 10. Tích là 2×3×5=302 cross 3 cross 5 equals 302×3×5=30.
Answer: Bài toán yêu cầu tìm cách biểu diễn số nguyên dương nn𝑛thành tổng của các số nguyên dương khác nhau sao cho tích của chúng là lớn nhất.
Để giải quyết bài toán này, ta sẽ sử dụng thuật toán tham lam (greedy algorithm).
Ta sẽ chọn các số hạng là các số nguyên dương liên tiếp bắt đầu từ 2, cho đến khi tổng của chúng gần bằng nn𝑛. Phần dư còn lại sẽ được phân bổ cho các số hạng đã chọn, bắt đầu từ số hạng lớn nhất.
Sau khi thực hiện thuật toán, ta sẽ có danh sách các số hạng cần tìm.
13 tháng 10 2025

code : #include <bits/stdc++.h>

using namespace std;

int main() {

ios_base::sync_with_stdio(false);

cin.tie(NULL); cout.tie(NULL);

freopen("DANALYSE.INP","r",stdin);

freopen("DANALYSE.OUT","w",stdout);

long long n;

cin>>n;

long long num, a[1000009], m, i;

num=2;

while (num<=n){

m++;

a[m]=num;

n=n-num;

++num;}

i=m;

while (n > 0){

a[i]++;

i--;

if(!i)i=m;

n--;}

cout<<m<<endl;

for (i=1;i<=m;i++)

cout<<a[i]<<endl;

return 0;

}



28 tháng 12 2020

a) =Average(B1,B3,B3,55)

b) =Sum(a1:a5,b3)

28 tháng 12 2020

a) =AVERAGE(B1, B2, B3, 55)

b)=SUM(A1:A5,B3)

6 tháng 10 2025

chỉ bt c++ :))

26 tháng 12 2021

a/ =SUM(A1:A5)=29

    =SUM(A1,A2,A3,A4,A5)=29

b/ =MAX(A1:A5)=9

     =MAX(A1,A2,A3,A4,A5)=9

26 tháng 12 2021

giúp mik với

5 tháng 1 2022

giúp mik vs mn ơi:(

Mọi người giúp em bài Pascal này với ạ: Bài 1: Viết chương trình nhập vào một dãy n số và in ra màn hình các thông tin sau: -Số hạng dương lớn nhất của dãy và chỉ số (vị trí) của nó. -Số hạng dương nhỏ nhất của dãy và chỉ số (vị trí) của nó. -Số hạng âm lớn nhất của dãy và chỉ số (vị trí) của nó. -Số hạng âm nhỏ nhất của dãy và chỉ số (vị trí) của nó. Bài 2: Viết...
Đọc tiếp

Mọi người giúp em bài Pascal này với ạ:

Bài 1: Viết chương trình nhập vào một dãy n số và in ra màn hình các thông tin sau:

-Số hạng dương lớn nhất của dãy và chỉ số (vị trí) của nó.

-Số hạng dương nhỏ nhất của dãy và chỉ số (vị trí) của nó.

-Số hạng âm lớn nhất của dãy và chỉ số (vị trí) của nó.

-Số hạng âm nhỏ nhất của dãy và chỉ số (vị trí) của nó.

Bài 2: Viết chương trình nhập vào mảng a gồm 10 phần tử nguyên, sau đó, nhập một giá trị x. Tìm trong mảng a nếu có phần tử nào có giá trị bằng với x thì hiển thị lên màn hình vị trí của nó trong mảng a.

Bài 3: Viết chương trình nhập vào một ma trận vuông, xuất ra màn hình ma trận đó và cho biết tổng các phần tử trên đường chéo chính.

1
26 tháng 3 2020

Bài 1:

uses crt;
var n,i,dem,maxd,vt,vt1,vt2,vt3,maxa,dem1:integer;
a,b,c,d,e,f,g:array[1..100]of integer;
mind,mina:int64;
begin
clrscr;
repeat
write('n='); readln(n);
if (n<=0) or (n>100) then writeln('nhap lai');
until (0<n) and (n<=100);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i]);
end;
{--------------------------so-hang-duong-----------------------}
dem:=0;
for i:=1 to n do
if a[i]>0 then
begin
inc(dem);
b[dem]:=a[i];
end;
maxd:=0;
for i:=1 to dem do
if maxd<b[i] then maxd:=b[i];
vt:=0;
for i:=1 to n do
if maxd=a[i] then
begin
vt:=vt+1;
c[vt]:=i;
end;
writeln('so hang duong lon nhat cua day la: ',maxd);
writeln('vi tri cua no lan luot la: ');
for i:=1 to vt do
write(c[i]:4);
writeln;
mind:=maxint;
for i:=1 to dem do
if mind>b[i] then mind:=b[i];
vt1:=0;
for i:=1 to n do
if mind=a[i] then
begin
inc(vt1);
d[vt1]:=i;
end;
writeln('so hang duong nho nhat cua day la: ',mind);
writeln('vi tri cua no lan luot la: ');
for i:=1 to vt1 do
write(d[i]:4);
{------------------------so-hang-am--------------------------}
writeln;
dem1:=0;
for i:=1 to n do
if a[i]<0 then
begin
inc(dem1);
e[dem1]:=a[i];
end;
maxa:=e[1];
for i:=1 to dem1 do
if maxa<e[i] then maxa:=e[i];
vt2:=0;
for i:=1 to n do
if maxa=a[i] then
begin
inc(vt2);
f[vt2]:=i;
end;
writeln('so hang am lon nhat cua day la: ',maxa);
writeln('vi tri cua no lan luot la: ');
for i:=1 to vt2 do
write(f[i]:4);
writeln;
mina:=maxint;
for i:=1 to dem1 do
if mina>e[i] then mina:=e[i];
vt3:=0;
for i:=1 to n do
if mina=a[i] then
begin
inc(vt3);
g[vt3]:=i;
end;
writeln('so hang am nho nhat cua day la: ',mina);
writeln('vi tri cua no lan luot la: ');
for i:=1 to vt3 do
write(g[i]:4);
readln;
end.

Bài 2:

uses crt;
var a,vt:array[1..10]of integer;
i,x,dem:integer;
begin
clrscr;
for i:=1 to 10 do
begin
write('a[',i,']='); readln(a[i]);
end;
write('nhap x='); readln(x);
dem:=0;
for i:=1 to 10 do
if a[i]=x then
begin
inc(dem);
vt[dem]:=i;
end;
if dem=0 then writeln('khong co gia tri ',x,' trong day')
else
begin
writeln('vi tri cua ',x,' trong day lan luot la:');
for i:=1 to dem do
write(vt[i]:4);
end;
readln;
end.

Bài 3:

uses crt;
var a:array[1..100,1..100]of integer;
n,i,j,t:integer;
begin
clrscr;
write('n='); readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']='); readln(a[i,j]);
end;
{----------------------------xuat-----------------------------}
writeln('ma tran ban vua nhap la:');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
{------------------tong-cac-phan-tu-tren-duong-cheo-chinh------------------}
t:=0;
for i:=1 to n do
for j:=1 to n do
if i=j then t:=t+a[i,j];
writeln('tong cac phan tu tren duong cheo chinh la: ',t);
readln;
end.