0.Đoạn số có tổng bằng nhau


Submit solution

Points: 4 (partial)
Time limit: 1.5s
Memory limit: 98M

Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Một đoạn số có tổng bằng nhau trong một dãy số là một nhóm các số theo đúng thứ tự ban đầu trong dãy mà nếu nhóm với nhau thì sẽ cho ra cùng một giá trị tổng. Ví dụ với dãy: 2 5 1 3 3 7 thì ta có thể nhóm thành: (2 5) (1 3 3) (7) cùng cho giá trị tổng là 7.

Chú ý: đoạn đặc biệt chứa tất cả các phần tử của dãy cũng được coi là một đoạn có tổng bằng nhau với chính giá trị tổng các số của dãy đó.

Yêu cầu: viết chương trình nhận vào các dãy số nguyên dương và trả về giá trị tổng nhỏ nhất có thể của một đoạn tổng bằng nhau trong dãy.

Dữ liệu vào

Dòng đầu tiên chứa một số nguyên 1 ≤ t ≤ 1000 là số lượng bộ test. Mỗi bộ test bao gồm:

Dòng đầu tiên chứa thứ tự bộ test và số M (0≤ M ≤ 10000) là số phần tử của dãy. Các dòng tiếp theo mỗi dòng ghi 10 số của dãy phân cách bởi 1 dấu cách. Dòng cuối cùng có thể có ít hơn 10 số. (Các số trong dãy đều nhỏ hơn 20000).

Dữ liệu ra

Với mỗi bộ test, in ra trên một dòng gồm số thứ tự bộ test và tổng nhỏ nhất có thể đạt được của các đoạn số có tổng bằng nhau. Nếu M = 0 thì không in ra gì

INPUT:

3

1 6

2 5 1 3 3 7

2 6

1 2 3 4 5 6

3 20

1 1 2 1 1 2 1 1 2 1

1 2 1 1 2 1 1 2 1 1

OUTPUT:

1 7

2 21

3 2


Comments


  • 1
    vtn  commented on Dec. 6, 2018, 3:44 p.m.

    hóng chị I_love_NguyenLinh khóa bn ạ


    • 0
      I_love_NguyenLinh  commented on Dec. 7, 2018, 2:32 p.m.

      mình K56, mà sao lại gọi là chị vậy :D chị thì love Nguyên Linh làm gì hihi


  • 0
    123  commented on Dec. 6, 2018, 9:52 a.m.

    //Gợi ý giúp e lí do code e sai được ko ạ

    include <bits/stdc++.h>

    using namespace std; int a[10005], tt, n; int 'Solver(){ for(int i=1;i<n;i++){ if('a[n]%'a[i]'==0){ int' k=2; for(int' 'j=i+1;j<'n;'j++){ if('a[j]>a[i]'k) break; else 'if('a[j]=='a[i]k) k++; } if('[i]*k'==a[n])' return a[i]; } } return 'a[n]; } int main(){ int test; cin>>test; while(test--){ a[0]=0; cin>>tt>>n; for(int i=1;i<=n;i++) { cin>>a[i]; a[i]+=a[i-1]; } // for(int i=1;i<=n;i++) cout<<a[i]<<' '; // cout<<'\n'; cout<<tt<<" "; cout<<Solver()<<'\n'; } return 0; }


    • 1
      I_love_NguyenLinh  commented on Dec. 6, 2018, 12:24 p.m.

      mình bổ sung đầu bài r đấy, M = 0 thì không in ra gì, với cả code bạn bị time out nữa nhé mình giảm test để tạm đây vì ko chưa thể re-up lại test chuẩn vì nó to quá :D good luck


  • -7
    123  commented on Dec. 4, 2018, 4:33 p.m.

    This comment is hidden due to too much negative feedback. Show it anyway.