1. Trang chủ
  2. » Thể loại khác

PASCAL - ĐỘ BỀN SỐ NGUYÊN KHÔNG ÂM.DOCX

4 2,4K 13

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 16,1 KB

Nội dung

Pascal - Độ Bền Số Nguyên Không Âm

Trang 1

Lý thuyết độ bền số nguyên không âm

Năm 1973, nhà toán học Neil Sloan đưa ra khái niệm Độ bền của một số nguyên không âm N được định nghĩa như sau:

+ Nếu N có một chữ số thì độ bền của N bằng 0.

+ Nếu N có từ 2 chữ số trở lên thì độ bền của N bằng độ bền của số nguyên là tích các chữ số của N cộng 1.

Yêu cầu: Tìm số bé hơn N có độ bền lớn nhất.

Ví dụ: Doben(77) = 4

Giải thích: Doben(77) = Doben(49)+1 = Doben(36)+1+1 = Doben(18)+1+1+1 = Doben(8)+1+1+1+1 = 0+1+1+1+1 = 4

Bài tập Pascal

Cho N, hãy tìm số bé hơn N có độ bền lớn nhất (0 <= N <= 2.000.000.000)

Ví dụ: Cho N = 100 thì Số nhỏ hơn N và có độ bền lớn nhất là 77, Độ bền của 77 = 4

Hãy đề xuất cấu trúc dữ liệu và giải thuật thích hợp để giải bài toán trên.

Hãy viết chương trình bằng ngôn ngữ Pascal để thể hiện lời giải trên.

Giải thuật

Tạo các biến cho chương trình như sau: i, j, k, n, do_ben, max kiểu longint

{Lập hàm tính tích các chữ số của N}

function tich(biến n kiểu longint) trả về dữ liệu kiểu longint

Tạo biến kqua có kiểu dữ liệu longint

Khi n=0 thì gán biến kqua = 0 ngược lại gán biến kqua = 1

Chạy vòng lặp While khi n<>0

gán kqua = kqua * (n mod 10) gán n = n div 10

Trang 2

{Chương trình chính}

Bắt đầu chương trình

Chạy vòng lặp While khi true (luôn luôn chạy) yêu cầu nhập và kiểm tra số nguyên N

Xóa dữ liệu hiển thị trên màn hình

In yêu cầu nhập số nguyên không âm N, điều kiện (0 <= N <= 2,000,000,000) Đọc dữ liệu nhập và gán vào biến n

Kiểm tra biến n (nếu lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 2,000,000,000) thì thoát vòng lặp While

Ngược lại thì không thoát vòng lặp While Gán biến max = 1

Chạy vòng For duyệt biến i từ 1 đến n

gán biến do_ben = 0 gán biến j = i Chạy vòng lặp While khi j>9

gán biến do_ben = do_ben + 1 gán biến j = kết quả hàm tich(j) Nếu biến do_ben lớn hơn hoặc bằng biến max thì

gán biến max = do_ben gán biến k = i

Thoát vòng For

In kết quả Số bé hơn N có độ bền lớn nhất là K

In kết quả Độ bền của K là max Thoát chương trình

Trang 3

Chương trình Pascal

program Do_Ben_So_Nguyen;

uses crt;

var i,j,k:longint;

var n,do_ben,max:longint;

function tich(n:longint):longint;

var kqua:longint;

begin

if n=0 then kqua:=0 else kqua:=1;

while n<>0 do

begin

kqua:=(kqua*(n mod 10));

n:=(n div 10);

end;

tich:=kqua;

end;

begin

while true do

begin

clrscr;

write('Nhap so nguyen khong am N (0 <= N <= 2,000,000,000): ');

readln(n);

if (n>=0) and (n<=2000000000) then break;

end;

Trang 4

for i:=1 to n do

begin

do_ben:=0;

j:=i;

while j>9 do begin

do_ben:=do_ben+1;

j:=tich(j);

end;

if do_ben>=max then begin

max:=do_ben;

k:=i;

end;

end;

writeln('So be hon N co do ben lon nhat la: ',k);

writeln('Do ben cua ',k,' la: ',max);

end

Ngày đăng: 07/08/2016, 09:08

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w