Bài viết liên quan

tải game đánh bài đổi thưởng rút tiền,luật chơi sicbo,twin68 game bài nổ hũ kwin

Chia sẻ Giải Pháp Hrbust ACM Luyện Tập Lập Trình 20240922

HowieHz 24-09-2024 Chuyển giao kiến thức > Mở khóa cuộc thi > Lưu trữ giải pháp 🌍 Tiếng Việt

102

  • Chia sẻ bài tập thuật toán và giải pháp tổng hợp

Lời mở đầu

Liên kết danh sách bài tập: Luyện tập lập trình 20240922 @ Hrbust Online Judge


Bài A

Kiểu dữ liệu của d phải là double, không phải float. Nếu không, kết quả cuối cùng sẽ bị mất độ chính xác.

Mã nguồn C++

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int t;
  cin >> t;
  while (t > 0) {
    t--;
    int p, w, s;
    double d = 0;
    cin >> p >> w >> s;
    if (s < 250) {
      d = 0;
    } else if (s < 500) {
      d = 0.02;
    } else if (s < 1000) {
      d = 0.05;
    } else if (s < 2000) {
      d = 0.08;
    } else if (s < 3000) {
      d = 0.1;
    } else {
      d = 0.15;
    }
    cout << fixed << setprecision(3) << 1.0 * p * w * s * (1 - d);
    cout << endl;
  }
  return 0;
}

Bài B

Mã nguồn Python để tạo bảng giá trị

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
l = []
for i in range(-9, 9 + 1):
  temp_l = []
  for _ in range(1, 9 + 1):
    temp_l.append(0)
  l.append(temp_l)
for a in range(-9, 9 + 1):
  for n in range(1, 9 + 1):
    sum = 0
    for le in range(1, n + 1):
      sum += int(le * "1") * a
    l[a + 9][n - 1] = sum
print(l)

Kết quả xuất ra:

1
2
3
[{-9, -108, -1107, -11106, -111105, -1111104, -11111103, -111111102,
   -1111111101},
 {-8, -96, -984, -9872, -98760, -987648, -9876536, -98765424, -987654312},...

Mã nguồn C++ để sử dụng kết quả

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int ans[][9] = {
  {-9, -108, -1107, -11106, -111105, -1111104, -11111103, -111111102,
   -1111111101}, ...
};
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int t;
  cin >> t;
  while (t > 0) {
    t--;
    int a, n;
    cin >> a >> n;
    cout << ans[a + 9][n - 1];
    cout << endl;
  }
  return 0;
}

Bài C

Mã nguồn Python để tạo bảng giá trị

1
2
3
4
for i in range(1000):
  if (i**2) <= 1000000:
    if str(i**2).endswith(str(i)):
      print(i**2, end=",")

Kết quả xuất ra:

1
0,1,25,36,625,5776,141376,390625,

Mã nguồn C++ để sử dụng kết quả

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int ans[] = {0, 1, 25, 36, 625, 5776, 141376, 390625};
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int t;
  cin >> t;
  while (t > 0) {
    t--;
    int a, b;
    cin >> a >> b;
    bool flag = true;
    for (int number : ans) {
      if (number <= b && number >= a) {
        // Tránh xuất thừa dấu cách
        if (flag) {
          cout << number;
          flag = false;
        } else {
          cout << " " << number;
        }
      }
    }
    cout << endl;
  }
  return 0;
}

Bài D

Mã nguồn C++

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int n;
  cin >> n;
  while (n > 0) {
    n--;
    int a, b;
    cin >> a >> b;
    vector<int> l;
    bool start_flag = true;
    for (int i = a; i <= b; i++) {
      if (i % 3 != 0) {
        if (start_flag) {
          cout << i;
          start_flag = false;
          continue;
        }
        cout << " " << i;
      }
    }
    cout << endl;
  }
  return 0;
}

Bài E

Mã nguồn C++

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int t;
  cin >> t;
  while (t > 0) {
    t--;
    int a;
    cin >> a;
    int max_line = 2 * a - 1;
    for (int i = 1; i <= max_line; i += 2) {
      for (int ii = 0; ii <= ((max_line - i) / 2) - 1; ii++) {
        cout << " ";
      }
      for (int iii = 0; iii <= i - 1; iii++) {
        cout << "*";
      }
      cout << endl;
    }
    for (int i = max_line; i > 1; i -= 2) {
      for (int ii = (max_line - i) / 2 + 1; ii > 0; ii--) {
        cout << " ";
      }
      for (int iii = (i - 1) - 1; iii > 0; iii--) {
        cout << "*";
      }
      cout << endl;
    }
  }
  return 0;
}

Các bài còn lại cũng đã được chuyển sang tiếng Việt tương tự như trên.

Bài viết đề xuất

2024-09-16 Hrbust ACM Luyện tập 2024 tuần thứ 4 giải pháp chia sẻ (A-G,J-O)
2024-09-09 Hrbust ACM Luyện tập 2024 tuần thứ 3 giải pháp chia sẻ
2024-09-02 Hrbust ACM Luyện tập 2024 tuần thứ 1~2 giải pháp chia sẻ


Hy vọng tài liệu này sẽ hữu ích cho các bạn!

Built with Hugo
Theme Stack thiết kế bởi Jimmy