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.

10 giờ trước (15:29)

Ở đây mình chỉ chấp nhận một cách chia dãy thành 3 phần có tổng bằng nhau và khác rỗng.

Gọi aiai là số thứ ii trong mảng đã cho. Lưu ý rằng số thứ ii trong mảng đã cho (aiai) được đánh số i−1i−1 theo đề bài.

Ta định nghĩa một hàm f(x)f(x) (mảng cộng dồn) theo công thức truy hồi như sau:

f(x)={0 nếx=0f(x−1)+ax nếu x > 0f(x)={0 nếu x=0f(x−1)+ax nếu x > 0

Ta có thể dễ dàng tính được giá trị của f(i)f(i) với mọi 0≤in0≤i≤n trong một vòng for.

Gọi SS là tổng các phần tử trong một phần của AA sau khi tách AA thành 3 phần như đề bài đã nói. Dễ thấy, SS bằng 1313 tổng dãy AA. Mà theo định nghĩa hàm f(x)f(x) như trên, ta có S=13×f(n)S=13×f(n). Do đó, ta có thể dễ dàng tính được SS.

Việc bây giờ ta cần làm là tìm hai điểm cắt i,ji,j (1≤i<j<n1≤i<j<n) sao cho:

a1+a2+…+ai=ai+1+…+aj=aj+1+…+ana1+a2+…+ai=ai+1+…+aj=aj+1+…+an

Theo định nghĩa hàm f(x)f(x), ta có thể thấy ngay đẳng thức trên tương đương:

f(i)−f(0)=f(j)−f(i)=f(n)−f(j)=Sf(i)−f(0)=f(j)−f(i)=f(n)−f(j)=S

Từ đó ta nhận thấy cần tìm hai điểm cắt i,ji,j sao cho f(i)=Sf(i)=S và f(j)=2×Sf(j)=2×S

Công việc đến đây đã quá đơn giản do ta đã tính trước được tất cả các giá trị của f(x)f(x).

#include <bits/stdc++.h>

using namespace std;

long long a[10000],i,n,t;

int main()

{

freopen("avg.inp","r",stdin);

freopen("avg.out","w",stdout);

cin>>n;

for (i=1; i<=n; i++) cin>>a[i];

t=0;

for (i=1; i<=n; i++) t+=a[i];

cout<<fixed<<setprecision(1)<<(t*1.0)/(n*1.0);

return 0;

}

20 tháng 11 2023

def xoa_phan_tu_chia_het_cho_3(arr):
    return [x for x in arr if x % 3 != 0]

# Nhập số phần tử của dãy
n = int(input())

# Nhập dãy số nguyên
day_so = list(map(int, input().split()))

# Xóa các phần tử chia hết cho 3
ket_qua = xoa_phan_tu_chia_het_cho_3(day_so)

# In ra dãy sau khi xóa
print(*ket_qua)

9 tháng 3 2023

# Nhập số nguyên dương N từ bàn phím

N = int(input("Nhập số nguyên dương N: "))

# Khởi tạo dãy số nguyên

numbers = []

# Vòng lặp để nhập N số nguyên và thêm chúng vào danh sách numbers

for i in range(N):

     number = int(input("Nhập số thứ {}:".format(i+1)))

     numbers.append(number)

# In ra dãy số đã nhập

print("Dãy số bạn đã nhập là: ", end="")

for number in numbers:

     print(number, end=" ")

print()

# Tính tổng các số chia hết cho 3 và in ra màn hình

total = 0

for number in numbers:

     if number % 3 == 0:

          total += number

print("Tổng các số trong dãy chia hết cho 3 là: ", total)

const fi='chuso.inp';      fo='chuso.out';var f1,f2:text;    i,n:integer;    a:array[1..100] of integer;//chuongtrinhconfunction dai(x:integer)var st:string;    d:integer;beginstr(x,st);d:=length(st);dai:=d;end;//chuongtrinhconfunction tong(x:integer)var i,n,d,t,y:integer;    st:string;begin   str(x,st);   d:=length(st);   t:=0;   for i:=1 to d do    begin    val(st[i],n,y);    t:=t+n;    end;   tong:=t;end;//chuongtrinhchinhbeginassign(f1,fi); reset(f1);assign(f2,fo); rewrite(f2);readln(f1,n);for i:=1 to n do  read(f1,a[i]);for i:=1 to n do      writeln(f2,dai(a[i]),' ',tong(a[i]));    close(f1);    close(f2);end.
30 tháng 12 2020

Thuật toán

-Bước 1: Nhập dãy số

-Bước 2: t←0; i←1;

-Bước 3: Nếu a[i] mod 3=0 thì t←t+a[i];

-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 t

-Bước 7: Kết thúc

27 tháng 12 2016

Bài 1.

Bước 1. Nhập N và dãy số \(a_1,a_2,...,a_N\)

Bước 2. \(i\leftarrow1\), \(S\leftarrow0\)

Bước 3. \(i\leftarrow i+1\)

Bước 4. 4.1 Nếu \(i>N\) thì kết thúc thuật toán và đưa ra kết quả.

4.2 \(a_i\ge0\) thì quay lại bước 3

4.3 \(S\leftarrow S+a_i\) rồi quay lại bước 3

8 tháng 10 2018

S là gì

10 tháng 12 2021

giúp em với ạ

10 tháng 12 2021

#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;

}