N
ndvpro
Chắc suất Đại học top - Giữ chỗ ngay!! ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.
Viết chương trình cho phép nhập vào từ bàn phím số tự nhiên N
(1< N < 1000). Xuất ra màn hình các kết quả sau:
a) Phân tích số N thành tổng ba số nguyên dương a, b, c khác nhau
(Các hoán vị của ba số a, b, c chỉ xem là một cách phân tích nên chỉ in ra
một lần).
b) In ra số nguyên dương x và số nguyên dương k (k>1) sao cho
tổng k số tự nhiên liên tiếp bắt đầu từ x bằng N. Nếu có nhiều cặp số x, k
thoả mãn thì in ra tất cả các cặp số x, k.
c) Tìm cặp số tự nhiên x, y lớn hơn 1 sao cho N = xy
Yêu cầu: Thông báo KHONG CO khi không tìm thấy.
VAR F,F1:TEXT;
I,J,K,N:INTEGER;
{========================================================================================}
PROCEDURE CAUA;
BEGIN
IF N>2 THEN WRITE(F1,'CO CAC CAP SO CO TONG BANG ',N,': ') ELSE WRITE(F1,'KHONG CO');
FOR I:=1 TO N-2 DO
FOR J:=I TO N-1 DO
FOR K:=J TO N DO
IF I+J+K=N THEN WRITELN(F1,I,' ',J,' ',K);
END;
{=========================================================================================}
PROCEDURE CAUB;
VAR TAM:INTEGER;
KT:BOOLEAN;
BEGIN
I:=1; K:=2;
REPEAT
TAM:=0;
FOR J:=I TO K DO TAM:=TAM+J;
IF TAM=N THEN BEGIN
WRITELN(F1,'TONG SO TU NHIEN TU ',I,' TOI ',K,' BANG ',N);
KT:=TRUE;
END;
IF K=N THEN BEGIN
INC(I);
K:=I;
END ELSE INC(K);
UNTIL I>N DIV 2;
IF KT=FALSE THEN WRITELN(F1,'KHONG CO CAP X,K NAO');
END;
{=========================================================================================}
PROCEDURE CAUC;
VAR X,Y:INTEGER;
KT:BOOLEAN;
BEGIN
KT:=FALSE;
FOR I:=2 TO N DO BEGIN
Y:=2;
REPEAT
X:=I;
FOR J:=2 TO Y DO X:=X*X;
IF X=N THEN BEGIN
WRITELN(F1,'CAP X=',I,' VA Y=',J,' DE X MU Y BANG ',N);
KT:=TRUE;
END;
INC(Y);
UNTIL Y=N;
END;
IF KT=FALSE THEN WRITE(F1,'KHONG CO CAP X,Y DE X MU Y BANG ',N);
END;
{==========================================================================================}
BEGIN
ASSIGN(F,'D:\IT\NA\B10\I.INP');
ASSIGN(F1,'D:\IT\NA\B10\O.OUT');
RESET(F);
REWRITE(F1);
READLN(F,N);
CAUA;
CAUB;
CAUC;
CLOSE(F);
CLOSE(F1);
END.
tkssss
.
(1< N < 1000). Xuất ra màn hình các kết quả sau:
a) Phân tích số N thành tổng ba số nguyên dương a, b, c khác nhau
(Các hoán vị của ba số a, b, c chỉ xem là một cách phân tích nên chỉ in ra
một lần).
b) In ra số nguyên dương x và số nguyên dương k (k>1) sao cho
tổng k số tự nhiên liên tiếp bắt đầu từ x bằng N. Nếu có nhiều cặp số x, k
thoả mãn thì in ra tất cả các cặp số x, k.
c) Tìm cặp số tự nhiên x, y lớn hơn 1 sao cho N = xy
Yêu cầu: Thông báo KHONG CO khi không tìm thấy.
VAR F,F1:TEXT;
I,J,K,N:INTEGER;
{========================================================================================}
PROCEDURE CAUA;
BEGIN
IF N>2 THEN WRITE(F1,'CO CAC CAP SO CO TONG BANG ',N,': ') ELSE WRITE(F1,'KHONG CO');
FOR I:=1 TO N-2 DO
FOR J:=I TO N-1 DO
FOR K:=J TO N DO
IF I+J+K=N THEN WRITELN(F1,I,' ',J,' ',K);
END;
{=========================================================================================}
PROCEDURE CAUB;
VAR TAM:INTEGER;
KT:BOOLEAN;
BEGIN
I:=1; K:=2;
REPEAT
TAM:=0;
FOR J:=I TO K DO TAM:=TAM+J;
IF TAM=N THEN BEGIN
WRITELN(F1,'TONG SO TU NHIEN TU ',I,' TOI ',K,' BANG ',N);
KT:=TRUE;
END;
IF K=N THEN BEGIN
INC(I);
K:=I;
END ELSE INC(K);
UNTIL I>N DIV 2;
IF KT=FALSE THEN WRITELN(F1,'KHONG CO CAP X,K NAO');
END;
{=========================================================================================}
PROCEDURE CAUC;
VAR X,Y:INTEGER;
KT:BOOLEAN;
BEGIN
KT:=FALSE;
FOR I:=2 TO N DO BEGIN
Y:=2;
REPEAT
X:=I;
FOR J:=2 TO Y DO X:=X*X;
IF X=N THEN BEGIN
WRITELN(F1,'CAP X=',I,' VA Y=',J,' DE X MU Y BANG ',N);
KT:=TRUE;
END;
INC(Y);
UNTIL Y=N;
END;
IF KT=FALSE THEN WRITE(F1,'KHONG CO CAP X,Y DE X MU Y BANG ',N);
END;
{==========================================================================================}
BEGIN
ASSIGN(F,'D:\IT\NA\B10\I.INP');
ASSIGN(F1,'D:\IT\NA\B10\O.OUT');
RESET(F);
REWRITE(F1);
READLN(F,N);
CAUA;
CAUB;
CAUC;
CLOSE(F);
CLOSE(F1);
END.
tkssss
.