Bài tập  /  Bài đang cần trả lời

Trong bài toán này, người ta định nghĩa số nguyên dương hoàn hảo là số mà có tổng các chữ số bằng 10. Em hãy lập trình tìm số nguyên dương hoàn hảo nhỏ thứ K

----- Nội dung dịch tự động từ ảnh -----
Bài 3: số hoàn hảo thứ là
Trong bài toán này, người ta định nghĩa số nguyên dương hoàn hảo là số mà có tổng các chữ
số bằng 10. Em hãy lập trình tìm số nguyên dương hoàn hảo nhỏ thứ K. Ví dụ dãy 5 số nguyên
dương hoàn hảo đầu tiên là 19, 28, 57, 46, 55, 64, 75, 82, 91, 109.
Dữ liệu vào: Được đọc tại file HH inp gồm 1 số nguyên dương K.
Kết quả: Ghi ra kết quả file HH out số nguyên dương hoàn hảo nhỏ thứ
HH inp
HH imp
1
19
2
28
Ràng buộc level:20.
1 Xem trả lời
Hỏi chi tiết
169
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để giải bài toán này, chúng ta cần tìm số nguyên dương nhỏ nhất mà tổng các chữ số của nó bằng 10. Sau đó, chúng ta sẽ tìm số nguyên dương hoàn hảo nhỏ thứ K.

Dưới đây là mã Python để giải bài toán này:

```python
def is_perfect_number(n):
return sum(int(digit) for digit in str(n)) == 10

def find_kth_perfect_number(k):
count = 0
num = 19 # Bắt đầu từ số 19 vì đây là số hoàn hảo nhỏ nhất
while True:
if is_perfect_number(num):
count += 1
if count == k:
return num
num += 1

# Đọc dữ liệu từ file HH.inp
with open('HH.inp', 'r') as file:
k = int(file.read().strip())

# Tìm số hoàn hảo nhỏ thứ K
result = find_kth_perfect_number(k)

# Ghi kết quả vào file HH.out
with open('HH.out', 'w') as file:
file.write(str(result))
```

Giải thích mã:
1. Hàm `is_perfect_number(n)` kiểm tra xem tổng các chữ số của số `n` có bằng 10 hay không.
2. Hàm `find_kth_perfect_number(k)` tìm số nguyên dương hoàn hảo nhỏ thứ K. Bắt đầu từ số 19 và tăng dần, kiểm tra từng số xem có phải là số hoàn hảo không. Nếu đúng, tăng biến đếm `count`. Khi `count` bằng K, trả về số đó.
3. Đọc giá trị K từ file `HH.inp`.
4. Tìm số hoàn hảo nhỏ thứ K và ghi kết quả vào file `HH.out`.

Bạn cần tạo hai file `HH.inp` và `HH.out` trong cùng thư mục với mã Python để chương trình hoạt động chính xác. File `HH.inp` chứa giá trị K, và file `HH.out` sẽ chứa kết quả.
0
0
DDT
22/07 15:32:13
+5đ tặng
#include <bits/stdc++.h>
#define __SHI__ signed main()
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define INF (int)1e18
#define vi vector<int>
#define vii vector<int,int>
#define MAXN (int)3e2 + 7
#define FOR(i, a, b) for (int i = a; i <= b; ++i)
#define FOD(i, a, b) for (int i = a; i >= b; --i)
#define FORR(i, a, b, c) for (int i = a; i <= b; i += c)
#define endl "\n"
#define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
using namespace std;
int check(int k)
{
  int s = 0;
  while (k)
  {
    s += k % 10;
    k /= 10;
  }
  return (s == 10);
}
__SHI__
{
  fastio;
  int n; cin >> n;
  int d = 1;
  for (int i = 19; ; i += 9)
  {
    if (!check(i)) continue;
    if (d == n)
    {
      cout << i << endl;
      return 0;
    }
    ++d;
  }
  return 0;
}

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×