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

Giải bài có thưởng!

Để thu hút khách hàng, Siêu thị điện máy cho đặt một máy tính ngay cạnh lối vào. Trên màn hình của máy tính hiển thị số nguyên n có 4 chữ số (không có số 0 ở đầu) và cho biết số này nhận được từ số nguyên x có 4 chữ số có nghĩa bằng cách cộng 2 chữ số đầu của x và 2 chữ số cuối của x sau đó viết liên tiếp 2 số nhận được thành số hiển thị trên màn hình, trong đó số lớn hơn được viết trước

giải bằng pascal ạ
----- Nội dung dịch tự động từ ảnh -----
CÂU 1. PHIÊU GIẢM GIÁ
Để thu hút khách hàng, Siêu thị điện máy cho đặt một máy tính ngay cạnh lối vào. Trên màn hình của máy tính hiển thị số nguyên n có 4 chữ số (không có số 0 ở đầu) và cho biết số này nhận được từ số nguyên x có 4 chữ số có nghĩa bằng cách cộng 2 chữ số đầu của x và 2 chữ số cuối của x sau đó viết liên tiếp 2 số nhận được thành số hiển thị trên màn hình, trong đó số lớn hơn được viết trước. Ví dụ x = 3165
thì 2 số nhận được sẽ là 3 + 1 = 4 và 5 + 6 = 11 và kết quả hiển thị trên màn hình
sẽ là 114.
Khách hàng phải có nhiệm vụ nạp vào máy tính số nguyên nhỏ nhất có 4 chữ
số (không có các số 0 không có nghĩa), từ đó tạo ra kết quả đã nêu trên màn hình.
Nếu không tồn tại số phù hợp thì nạp vào số 0. Nếu khách hàng trả lời đúng trong
phạm vi chờ đợi của máy thì sẽ nhận được một phiếu giảm giá khi mua hàng trong
Siêu thị.
Em hãy viết chương trình xác định số cần đưa vào để nhận được phiếu giảm giá.
Dữ liệu vào: số nguyên n có 4 chữ số.
Kết quả ra: số cần đưa vào để nhận được phiếu giảm giá hoặc số 0 nếu không
tồn tại số cần tìm.
0 trả lời
Hỏi chi tiết
57
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Dưới đây là chương trình Pascal để giải bài toán này:

```pascal
program TimSoNguyen;

var
n, x, a, b, c, d, sum1, sum2: integer;
found: boolean;

begin
readln(n);
found := false;

for x := 1000 to 9999 do
begin
a := x div 1000; // Chữ số hàng nghìn
b := (x div 100) mod 10; // Chữ số hàng trăm
c := (x div 10) mod 10; // Chữ số hàng chục
d := x mod 10; // Chữ số hàng đơn vị

sum1 := a + b;
sum2 := c + d;

if (sum1 > sum2) and (sum1 * 100 + sum2 = n) then
begin
writeln(x);
found := true;
break;
end
else if (sum2 > sum1) and (sum2 * 100 + sum1 = n) then
begin
writeln(x);
found := true;
break;
end;
end;

if not found then
writeln(0);
end.
```

Chương trình này thực hiện các bước sau:

1. Đọc số nguyên `n` từ đầu vào.
2. Duyệt qua tất cả các số nguyên `x` có 4 chữ số từ 1000 đến 9999.
3. Tách các chữ số của `x` thành `a`, `b`, `c`, và `d`.
4. Tính tổng của hai chữ số đầu (`sum1`) và hai chữ số cuối (`sum2`).
5. Kiểm tra nếu `sum1` lớn hơn `sum2` và `sum1 * 100 + sum2 = n` hoặc `sum2` lớn hơn `sum1` và `sum2 * 100 + sum1 = n`.
6. Nếu tìm thấy số `x` thỏa mãn điều kiện, in ra số đó và kết thúc chương trình.
7. Nếu không tìm thấy số nào thỏa mãn, in ra `0`.

Chương trình này đảm bảo tìm ra số nguyên nhỏ nhất có 4 chữ số thỏa mãn điều kiện hoặc in ra `0` nếu không có số nào thỏa mãn.

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

Học ngoại ngữ với Flashcard

×
Trợ lý ảo Trợ lý ảo
×
Gia sư Lazi Gia sư