0.Chia Team


Submit solution

Points: 2 (partial)
Time limit: 1.0s
Memory limit: 98M

Author:
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

Bài toán rất đơn giản: Có n thí sinh từ mọi miền tổ quốc cùng thi đỗ vào UTC trong kì thi tuyển sinh Đại học vừa qua. Nhà trường sẽ chia các bạn thí sinh vào m lớp học với quy định mỗi lớp có ít nhất 1 sinh viên. Sau khi chia lớp xong, từng cặp sinh viên trong cùng một lớp sẽ trở thành bạn của nhau. Nhiệm vụ của bạn là viết chương trình tính toán xem số lượng tối thiểu và số lượng tối đa nhất có thể của số lượng cặp bạn có thể hình thành sau khi chia lớp.

Input:

  • Dòng duy nhất gồm 2 số nguyên \(n,m ( 1 <= m <= n <= 10^9)\) - Tương ứng là số lượng các thí sinh đỗ và số lượng Lớp học dự định sẽ chia.

Output:

  • Dòng duy nhất gồm 2 số \(a\) và \(b\). Tương ứng là số lượng tối thiểu và số lượng tối đa nhất có thể cần tìm.

Example:

Input:

5 1

Output:

10 10

Comments


  • 0
    quanthanh725-CDT-K64  commented on Sept. 8, 2024, 1:11 p.m.

    include<bits/stdc++.h>

    define ll long long

    using namespace std;

    ll db(ll n){ return n*(n-1)/2; }

    int main(){ ll n,m; cin >>n>>m; if(m==1) cout <<db(n)<<" "<<db(n); else{ ll d=n/m; ll l=n%m; ll e=db(d)(m-l)+db(d+1)l; ll f=db(n-m+1); cout <<e<<" "<<f;

    }

    }


  • 0
    ga123  commented on Sept. 2, 2021, 11:09 a.m. edit 7

    10 là như thế này :

    • trường hợp tối thiểu xảy ra khi chia trung bình cộng : giả sử 7 lớp , 22 học sinh. chia tbc thì ra 6 lớp 3 bạn , 1 lớp 4 bạn. tính theo cấp số cộng , ra được 24 cặp bạn phân biệt.
    • trường hợp tối đa xảy ra khi dồn toàn bộ hs vào 1 lớp , những lớp còn lại có 1 người. được 6 lớp 1 bạn và 1 lớp 16 bạn các lớp 1 bạn sẽ không tồn tại cặp bạn, nhưng riêng lớp 16 bạn là cấp số cộng từ 1 đến 15 ra được 120 cặp bạn phân biệt
    • tuy nhiên trong trường hợp chỉ có 1 lớp như trên thì số tối thiểu và tối đa là giống nhau theo cả hai cách chia.
    • nói tóm lại thì ngoài vấn đề về thuật toán đã giải quyết thì còn bài toán về phép phân phối. 5C2 tức là phân phối 2 cặp trên 5 đc 10 cặp bấm máy tính là thấy luôn :3
    • chú ý để kiểu dữ liệu nguyên to nhất luôn không bị báo sai đấy :3 10^9 cơ mà dưới đây là bài làm hoàn chỉnh theo ý của mình , nhưng chậm gấp 4 lần bài bạn khác vì tối ưu code chán quá ;-;)
      #include"bits/stdc++.h"
      using namespace std;
      long long cso(long long a)
      {
      return (a-1)*(a)/2;
      };
      int main()
      {
      cout<<setprecision(0)<<fixed;
      long long a,b,i;
      cin>>a>>b;
      long long tbc= a/b;
      long long chiadu=a%b;
      long long ans1=b*cso(tbc)+chiadu*(tbc);
      long long ans2= cso(a-b+1);
      if(a<=b)
      {
      cout<<"0 0";    
      }
      else
      {
        cout<<ans1<<" "<<ans2;
      }
      };

    • 1
      TICHPX  commented on Sept. 3, 2021, 4:05 a.m.
      1. Đều chạy trên cùng một server ở đây, chậm là do cin, cout chậm hơn scanf và printf bạn nên tra google về "fast IO in C++" để biết cách chạy cin và cout vẫn nhanh

      2. Khi viết trình bày code bạn đưa vào trong thẻ thêm 3 dấu ` vào dòng đầu và cuối code như mình ví dụ dưới đây

      cout<<"Hello you";

      • 0
        ga123  commented on Sept. 3, 2021, 7:16 a.m.

        Vâng ạ, em sửa lại comment r ạ :3 !


  • 0
    Truc_CNTT6_K60  commented on May 30, 2020, 11:23 a.m. edited

    cho em xin hết test cũng được ạ ;)


  • 0
    culuamanh01  commented on Jan. 10, 2020, 11:17 a.m.

    Em thấy các học sinh giữa các lớp có thể đổi cho nhau
    VD: 3 em tên 1 2 3 chia vào 2 lớp.
    Cách cách chia:
    1 2 lớp thứ nhất 3 lớp thứ hai.
    1 3 lớp thứ nhất 2 lớp thứ hai.
    2 3 lớp thứ nhất 1 lớp thứ hai.
    Coi như lớp thứ nhất và lớp thứ hai là như nhau thì chia đc 3 cách.
    Theo bộ test thì chỉ có 1 cách duy nhất tức vai trò của 3 học sinh 1 2 3 khi chia lớp là như nhau ,nhưng khi chia vào từng lớp thì vai trò lại khác nhau.
    Ai có thể giải thích chỗ này cho em đc ko ạ


  • -3
    kengaming123vn  commented on March 17, 2019, 3:05 a.m.

    ai giải thích cho mình tại sao 10 10 với


  • 1
    Nam_CNTT2_K58  commented on Nov. 3, 2018, 8:16 a.m.

    ad cho em hỏi cái chia lớp là mình thích chia như nào cũng đc ạ miễn sao mỗi lớp có ít nhất một học sinh hay là chia học sinh theo trung bình học sinh từng lớp


    • 0
      NguyenQuangKhai  commented on Dec. 25, 2018, 2:54 p.m.

      nam_qc_54 thích chia sao cũng đk bạn ah. miễn là mỗi lớp có ít nhất 1 học sinh.