Bảng nhân


Submit solution

Points: 300 (partial)
Time limit: 1.1s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++, Pascal

Cho một ma trận các số nguyên gồm \(n\) dòng \(m\) cột. Các dòng được đánh số từ \(1\) đến \(n\) từ trên xuống dưới. Các cột được đánh số từ \(1\) đến \(m\) từ trái qua phải. Giá trị của số nguyên tại dòng \(i\) cột \(j\) là phép nhân \(i*j\). Lấy tất cả các số trong ma trận và sắp xếp tăng dần. Hãy tìm số nguyên thứ k trong dãy đã sắp xếp.

Yêu cầu: Cho giá các quyển sách, hãy giúp cô bán hàng sắp xếp các quyển sách vào các nhóm sao cho tổng số tiền khách hàng phải trả là ít nhất có thể. Chú ý cô bán hàng có thể sắp xếp các quyển sách vào các nhóm có ít nhất 1 quyển hoặc nhiều nhất 3 quyển.

Dữ liệu vào:

  • Là ba số nguyên \(n, m, k\) cách nhau một khoảng trắng \((1 \le n, m \le 1000; 1 \le k \le n*m)\).

Kết quả:

  • Là số nguyên thứ \(k\) sau khi sắp xếp các số trong ma trận.

Sample Input 1

2 3 4

Sample Output 1

3

Sample Input 2

3 4 6

Sample Output 2

4

Giải thích:

Trong test 1:

1 2 3

2 4 6

Các số sau khi sắp xếp 1 2 2 3 4 6 => Số thứ 4 là 3.


Comments


  • -1
    huygamer2043  commented on Oct. 14, 2020, 2:51 p.m. edited

    Bài này e không nộp được aj nó bị lỗi phản hồi.

    E làm code ntn ạ :

    include <bits/stdc++.h>

    using namespace std;

    int m,n,k; int a[10001][10001]; int b[1000001],dem=0;

    int main() { cin>>m>>n>>k; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) { if(i==1) a[i][j]=j; else if(j==1) a[i][j]=i; else a[i][j]=i*j; } for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) { b[dem]=a[i][j]; dem++; } sort(b,b+dem); cout << b[k-1]; return 0; }


  • 0
    thich_viet_editor  commented on Aug. 5, 2020, 4:39 p.m.

    HINT

    đề chuẩn:http://lequydon.ntucoder.net/Problem/Details/4765

    Ý TƯỞNG:ta tạo mảng \(a[]\) nhằm lưu lại các giá trị \(i*j\) (\(i\)=\(1→n, j\)=\(1→m\)), sau đó sắp xếp lại mảng rồi in ra phần tử thứ k

    reference AC CODE | \(O(n*m)\)time | \(O(n*m)\)space | Sorting,Greedy

    int main()
    {
        ios_base::sync_with_stdio(0);
        cin>>n>>m>>k;
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=n;j++)
            {
                a[++mn]=i*j;
            }
        }
        sort(a+1,a+1+mn);
        cout<<a[k];
    }