PDA

View Full Version : Một bài hay! Nhờ anh em ra tay giúp đỡ!!!!



phao_lo
25-12-2011, 22:13
Cho trước số nguyên dương a. Kí hiệu T(a) là tổng các ước nguyên dương của a.
Nhập vào từ bàn phím:
+Số nguyên dương N, với 3<N<30.
+Một dãy A gồm N số nguyên đương bất kì có giá trị không vượt quá 10^4.
hiển thị ra màn hình các kết quả sau:
+dòng 1 ghi dãy số T(A1), T(A2), T(A3),..., T(AN).
+dòng 2 ghi các số Ai (1<=i<=N) của dãy A là ước của T(Ai). Nếu không có số hạng nào thì in ra màn hình thông báo 'KHONG'
vd1
Input
N=4
1 6 15 28
Output
1 12 24 56
1 6 28
vd2
input
N=4
7 8 9 10
Output
8 15 13 18
KHONG
mình mới làm được dòng 1. hoặc làm được cả 2 dòng nhưng lại bị xen kẽ nhau và không hiện được chữ 'KHONG'. Nhờ các huynh đệ tài ba giúp đỡ!!!

HGMinh95
26-12-2011, 20:35
Bài này theo mình bạn chỉ cần tạo một mảng đánh dấu c: array[1..30] of boolean;. Trong quá trình tính t(a[i]), bạn tính kiểm tra luôn xem t(a[i]) mod a[i] = 0 rồi gán lại gt cho mảng c:
c[i]:= t(a[i]) mod a[i] = 0;

Cuối cùng để in ra dòng 2 bạn làm như sau:


k:=0;
for i:=1 to n do
if c[i] then
begin
write(a[i],' ');
k:=k+1;
end;
if k = 0 then write('KHONG');


Nếu có thắc mắc về pascal bạn có thể vào trang http://pascalvn.com/

phao_lo
26-12-2011, 22:04
mình vào trang này rồi nhưng mà đăng bài mới kiểu gì hả bạn?

arsenal2310
26-12-2011, 22:13
vnoi.info cũng được.:D, vn.spoj.pl

phao_lo
26-12-2011, 22:20
nhưng mà phân trên tớ không làm giống như vậy. mà tớ làm liền luôn. không xuât hiện ra T(A[i])
Mình làm như vầy nè:
For i:=1 to N do
Begin
t:=0;
for k:=1 to A[i] do
If A[i] mod k=0 then T:=T+k;
Write(T:3);
end;
Readln;
End.
Thế nên làm gì xuât hiện ra T(A[i]). Bạn có thể nói cho mình cách làm khác không? Nếu làm như vậy thì chỉ được dòng 1 không bạn? không làm đc dòng thứ 2 nữa. hihi

HGMinh95
27-12-2011, 16:11
Bạn sửa thế này là được:


For i:=1 to N do
Begin
t:=0;
for k:=1 to A[i] do
If A[i] mod k=0 then T:=T+k;
Write(T:3);
if t mod a[i] = 0 then c[i]:=true else c[i]:= false;
end;
.... // in ra dòng 2
Readln;
End.

HGMinh95
27-12-2011, 16:13
mình vào trang này rồi nhưng mà đăng bài mới kiểu gì hả bạn?

Bạn nhấn nút bài mới là được

phao_lo
27-12-2011, 18:37
mình ấn bài mói rồi nhưng nó ra bài của người khác mới đăng chứ k dăng dc

raicars
29-12-2011, 13:42
mình ấn bài mói rồi nhưng nó ra bài của người khác mới đăng chứ k dăng dc
bạn vào một box bất kì rồi kick vào đấy sau thấy một list danh sách bài viết dưới danh sách có chữ bài mới bạn cứ kick vào rồi viết bài thôi

mrkita
29-12-2011, 15:31
Sao mà khoai vậy @@

phao_lo
29-12-2011, 17:22
đang đói, có khoai ăn là tốt lắm rồi bạn ah

phao_lo
29-12-2011, 17:23
Cám ơn bạn nhiều! =))